2012-11-27 62 views
227

是否可能在Linux命令行中每n秒重复一次命令。在Linux中自动重复命令

例如,说我有一个导入运行和我做

ls -l 

检查文件大小增加。我想有一个命令让这个自动重复。

回答

417

关注每5秒......

watch -n 5 ls -l

如果你希望有变化的视觉确认,追加前ls命令--differences

按照OSX手册页,这里还有

的--cumulative选项使得突出的“粘性”,即呈现曾经更改的所有位置的 运行显示。 -t 或-no-title选项会关闭显示时间间隔的标题, 命令以及显示屏顶部的当前时间,以及空白行后面的 。

的Linux/Unix手册页,可以发现here

+2

尼斯 - 皮蒂它不追加结果到命令行 –

+1

添加选项回答,允许变化的突出 – Rawkode

+0

有没有办法通过某种通知来刷新? –

90
while true; do 
    sleep 5 
    ls -l 
done 
+7

'手表'也有清除屏幕的不幸副作用,所以有时循环是有用的。要使用哪个取决于所需的输出格式。 –

+0

我通常会做循环,但在一行上做。但手表看起来好多了,但我必须切换到这一点。 –

+0

它必须在命令行 –

3

您可以运行下面的,只有过滤大小。如果您的文件名为somefilename你可以做以下

while :; do ls -lh | awk '/some*/{print $5}'; sleep 5; done

之一许多想法

`

68

“看”不允许在Busybox的几分之一秒,而“睡眠“确实。如果你想要做的事的特定次数,你总是可以做到这一点

while true; do ls -l; sleep .5; done 
+0

这对于如果需要将输出管道输出到某处(如bar aint递归)很有用 –

+1

谢谢。这适用于没有watch命令的busybox控制台。我用它来衡量我系统的正常运行时间:虽然是正确的;正常运行时间;睡1;完成 –

+0

在老版本的busybox上的FWIW(v1.11.2)我坚持使用,没有手表,睡眠不支持分数。但是,您可以成功使用睡眠1。 – moodboom

3

repeat 300 do my first command here && sleep 1.5 
+7

这适用于'csh'而不是'bash'或'sh'。 {1..300}中bash do'for x的 –

+5

;做'命令'|| break; sleep 1.5;完成' – Jasen

10

运行命令定期不cron是可能的,当我们去如果这对你很重要,试试这个与while

为命令:

while true ; do command ; sleep 100 ; done & 
[ ex: # while true; do echo `date` ; sleep 2 ; done & ] 

例子:

while true 
do echo "Hello World" 
sleep 100 
done & 

不要忘记在最后&,因为它会把你的循环的背景。但是你需要用命令“ps -ef | grep your_script”找到进程ID,那么你需要杀死它。所以请在运行脚本时添加'&'。

# ./while_check.sh & 

以下是与脚本相同的循环。创建文件“while_check。SH”,并把这个在它:

#!/bin/bash 
while true; do 
    echo "Hello World" # Substitute this line for whatever command you want. 
    sleep 100 
done 

然后键入bash ./while_check.sh &

+0

不是最后一个&,与没有&最后写入命令一样,而是用&:bash ./while_check.sh&?调用脚本。 – ransh

+0

@ransh:我们可以运行脚本./while_check.sh&我们可以立即获取进程ID,当我们添加&in脚本并且只运行没有&的脚本时,我们没有得到任何进程ID,但它会运行后台,当我编辑我们需要ps命令来获取进程ID,如果我们需要停止脚本。 –

+0

如果您愿意,可以在每个后台进程启动后将脚本修改为'echo $!' - 这是在后台启动的最后一个子进程的PID。 –

4

如果你想避免运行它‘漂流’,意思是要执行每N秒的命令,无论多长的命令需要(假设它只需不到N秒),这里的一些庆典,将重复执行命令,每5秒一秒钟的精度(并打印出警告,如果不能跟上):

PERIOD=5 

while [ 1 ] 
do 
    let lastup=`date +%s` 
    # do command 
    let diff=`date +%s`-$lastup 
    if [ "$diff" -lt "$PERIOD" ] 
    then 
     sleep $(($PERIOD-$diff)) 
    elif [ "$diff" -gt "$PERIOD" ] 
    then 
     echo "Command took longer than iteration period of $PERIOD seconds!" 
    fi 
done 

由于睡眠只能精确到一次,它可能仍会有一点漂移第二。您可以通过创造性地使用date命令来提高此准确性。

+0

谢谢..但我有2个问题,1-在哪里可以保存代码?换句话说,我应该在哪个路径中放置包含该脚本的文件?这使它自动运行?! 2如何在(#做命令)中包含php文件而不是在那里输入我的所有代码? – Hossam

11

如果该命令包含一些特殊字符(如管道和引号),则该命令需要用引号填充。例如,重复ls -l | grep "txt",手表命令应该是:

watch -n 5 'ls -l | grep "txt"'

+0

我在看管道传送表达时无法正常工作,但在阅读完本文后,我可以修复它:) –

5

手表是不错,但清洁屏幕。

watch -n 1 'ps aux | grep php' 
10

sleep已经返回0。因此,我正在使用

while sleep 3 ; do ls -l ; done 

这比mikhail的解决方案稍微短一点。

-1

为了更容易地减小漂移,使用方法:

while :; do sleep 1m & some-command; wait; done 

仍然会有漂移很少量的,由于bash的时间来运行循环结构和睡眠指令实际执行。

提示:':'evals to 0 ie ie true。

0
watch -n 5 'ls -l 

将每5秒后运行ls -l命令

输出: -

Every 5.0s: ls -l                          Fri Nov 17 16:28:25 2017 

total 169548 
-rw-rw-r-- 1 sachin sachin  4292 Oct 18 12:16 About_us_Admission.doc 
-rw-rw-r-- 1 sachin sachin  865 Oct 13 15:26 About_us_At_glance.doc 
-rw-rw-r-- 1 sachin sachin  1816 Oct 13 16:11 About_us_Principle.doc 
-rw-rw-r-- 1 sachin sachin  1775 Oct 13 15:59 About_us_Vission_mission.doc 
-rw-rw-r-- 1 sachin sachin  1970 Oct 13 16:41 Academic_Middle_school.doc 
-rw-rw-r-- 1 sachin sachin  772 Oct 16 16:07 academics_High_School.doc 
-rw-rw-r-- 1 sachin sachin  648 Oct 16 13:34 academics_pre_primary.doc 
-rw-rw-r-- 1 sachin sachin  708 Oct 16 13:39 academics_primary.doc 
-rwxrwxr-x 1 sachin sachin  8816 Nov 1 12:10 a.out 
-rw-rw-r-- 1 sachin sachin 23956 Oct 23 18:14 Ass1.c++ 
-rw-rw-r-- 1 sachin sachin  342 Oct 23 22:13 Ass2.doc 
drwxrwxr-x 2 sachin sachin  4096 Oct 19 10:45 Backtracking 
drwxrwxr-x 3 sachin sachin  4096 Sep 23 20:09 BeautifulSoup 
drwxrwxr-x 2 sachin sachin  4096 Nov 2 00:18 CL_1 
drwxrwxr-x 2 sachin sachin  4096 Oct 23 20:16 Code 
drwxr-xr-x 2 sachin sachin  4096 Nov 15 12:05 Desktop 
-rw-rw-r-- 1 sachin sachin  0 Oct 13 23:12 doc 
drwxr-xr-x 4 sachin sachin  4096 Nov 6 21:18 Documents 
drwxr-xr-x 27 sachin sachin 12288 Nov 17 13:23 Downloads 
-rw-r--r-- 1 sachin sachin  8980 Sep 19 23:58 examples.desktop