如何退出linux环境下的死循环程序ctrl+c 强制结束 或者另起一个终端 然后 ps -ef|grep 程序名 然后得到进程号 用kill -9 进程号
作为系统管理员经常会用到循环执行某段命令,我们可以使用简单的crontab来执行,大部分情况下都是可以的,不过最小的时间差都是要1分钟的,如果要死循环更小的时间去执行的话crontab好像做不到.
Run Linux Command Every Second
本文将介绍怎么样去连续不断的虚幻一段命令,就像top命令一样,默认3秒执行一下.
我们尚且不说你为什么要这么去循环命令,相信不同的管理员有不同的工作。.
1. 使用watch命令
Watch是一个Linux上可以监控命令执行并在屏幕上输出结果的命令,这意味着你可以及时看到程序的输出,默认情况下是2秒执行一次,当然你可以根据自己的喜好去修改时间.
监控内存使用情况
“Watch”使用起来很方便,也容易测试,直接输入:
# watch free -m复制代码上面的命令会每2秒查看你系统的内存使用情况
Monitor Memory Usage in Linux
根据上面图片显示的,会输出头信息,实时更新,如果你不想看到输出的话,加上参数 -t即可.
不过还有一个逻辑问题 – 怎么修改这个时间间隔呢?那我们就需要使用到 -n参数, 主要用来控制执行的时间. 这个单位是秒. 比如你想每10秒执行一下 script.sh ,那命令就像这样
# watch -n 10 script.sh复制代码Note 如果你像上面这么执行命令的话,你需要进入脚本文件存放的 文件夹位置,使用cd.
其他有用的参数:
-b – 创建在非0的情况下退出会有提示音.
-c – 解释ANSI 颜色顺序.
-d – 高亮输出的变更部分.监控登陆用户,更新时间和负载
假如你想监控登陆的用户,系统更新时间和美妙负载的情况,使用:
# watch uptime复制代码Watch Linux Load Average
退出的话,按下 CTRL+C.
默认情况下,这里的 'uptime' 命令会每2秒显示更新
监控复制copy命令的进度
我们使用 cp 来复制文件的时候,是不会显示进度的,那我们可以使用 watch 来查看进度:
# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso复制代码Monitor Progress of Copy Command
2. 使用sleep命令
Sleep命令经常是用来debug一些shell脚本的,不过也有其他的作用,比如吧 for 或者 while 循环结合起来会有很好的效果.
假设现在你是第一次听说 "sleep" 命令,那它主要是用来延迟执行的作用,在shell脚本中,你可以用来延迟执行下一个命令.
说到上面的循环,你可以让脚本延迟N秒后再执行下一命令.
对于loop的例子
# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done复制代码上面这行命令会循环执行echo命令,然后显示当前的时间,一共是10次,每5秒停一下.
下面是输出:
This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016复制代码你可以根据自己的需要修改echo和dat命令,已经延时时间。
while循环例子
# while true; do echo -n "This is a test of while loop";date ; sleep 5; done复制代码Here is sample output:
This is a test of while loopWed Feb 17 20:52:32 EET 2016This is a test of while loopWed Feb 17 20:52:37 EET 2016This is a test of while loopWed Feb 17 20:52:42 EET 2016This is a test of while loopWed Feb 17 20:52:47 EET 2016This is a test of while loopWed Feb 17 20:52:52 EET 2016This is a test of while loopWed Feb 17 20:52:57 EET 2016复制代码上面的命令除非用户终止,否则的话是不会听的,这可用来在后台运行一些脚本
[table=98%][/table]