top后台循环执行命令
时间: 2024-10-26 16:17:44 浏览: 15
在Linux系统中,`top`命令是一个交互式的进程监控工具,它通常不会在一个后台持续不断地执行单个命令。如果你想让某个命令周期性地运行并显示在`top`中,你可以考虑使用`screen`、`tmux`这样的终端管理器,或者将命令添加到定时任务计划中。
一种常见的做法是通过cron作业来定期执行命令。在`crontab -e`编辑器中设置一个定时任务,比如每分钟执行一次`top`:
```bash
*/1 * * * * /usr/bin/top > /dev/null 2>&1
```
这里,`*/1 * * * *`代表五分钟执行一次,`/usr/bin/top`是你想运行的命令,`>/dev/null 2>&1`会将输出重定向到null,避免干扰终端输出。
另一种方法是在shell脚本中使用`while`循环配合`sleep`命令,例如:
```bash
while true; do
/usr/bin/top
sleep 60 # 每隔一分钟执行一次
done &
```
然后在新的背景进程中运行这个脚本。请注意,这会在当前终端窗口打开一个新的进程,而不会显示在`top`中,除非你在脚本中手动输出信息。
如果你确实希望在`top`界面看到命令的结果,那么`top`本身并不提供这种功能,但它可以与其他工具配合使用,如`watch`。
相关问题
什么命令可以后台定时循环执行top
在Linux中,直接使用`top`命令作为后台定时循环执行的任务通常是不推荐的,因为`top`是交互式命令,不适合长时间无输入地运行。如果你想定期获取系统的资源状态,但不想频繁打开新窗口或控制台,可以考虑使用其他的命令行工具,比如`sshd`(如果在远程服务器上),或者是结合其他工具如`cron`、`nohup`、`screen`或`tmux`。
1. 使用`cron`定时任务:你可以编写一个shell脚本,让它每隔一段时间运行`top`,并将结果保存到文件或者直接发送邮件。例如,创建一个名为`my_top.sh`的文件:
```bash
while true; do
top > /path/to/output.log
sleep 600 # 每十分钟执行一次
done
```
然后配置`cron`定时任务:
```bash
crontab -e
*/10 * * * * /bin/bash /path/to/my_top.sh
```
2. 使用`nohup`命令:它可以让你的应用程序在用户登录关闭后继续运行。不过,`top`作为一个交互式程序,用`nohup`可能效果不佳:
```bash
nohup top &> /path/to/top_output.txt &
```
3. 使用`screen`或`tmux`:这两个都是终端管理器,允许你在一个会话中启动多个命令并保持它们在后台运行。比如,在`screen`中:
```bash
screen -dmS my_top top
```
这样可以在新开的屏幕会话里运行`top`,退出时`top`仍在后台运行。
4. 如果你想在控制台上定期更新`top`视图,可以用`watch`命令,但是它不能持久化记录历史:
```bash
watch -n 60 top
```
注意每个选项都有其适用场景和优缺点,根据实际需求选择最合适的方式。
在qnx系统中,写一个脚本 ,实现定期打印top命令、定期打印hogs命令、定期打印pidin a 命令的功能
可以通过编写一个shell脚本来实现这个功能。具体步骤如下:
1. 创建一个文件,例如monitor.sh。
2. 在文件中添加以下代码:
```
#!/bin/sh
while true
do
top >> top.log
sleep 10
done &
while true
do
hogs >> hogs.log
sleep 10
done &
while true
do
pidin a >> pidin.log
sleep 10
done &
```
3. 保存文件并退出。
4. 将文件赋予执行权限:
```
chmod +x monitor.sh
```
5. 运行脚本:
```
./monitor.sh
```
这个脚本将会在后台执行三个无限循环,每个循环每隔10秒钟执行一次相应的命令,并将输出重定向到对应的日志文件中。你可以在任何时间停止脚本的执行,只需使用kill命令结束它即可。
阅读全文