在Linux中自动重复命令

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

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

ls -l 

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

每5秒观看一次…

watch -n 5 ls -l

如果您希望对变更进行视觉确认,请在ls命令之前追加--differences

根据OSX手册页,也有

– 累积选项使突出显示“粘性”,呈现所有已经改变的位置的运行显示。 -t或–no-title选项会closures显示顶部显示间隔,命令和当前时间的标题以及以下空白行。

Linux / Unix手册页可以在这里find

 while true; do sleep 5 ls -l done 

“观看”不允许在“忙碌”时间中的一小部分时间,而“睡眠”时间。 如果这对你很重要,试试这个:

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

定期运行命令没有cron是可能的,当我们一起去。

作为命令:

 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”find进程ID,那么你需要杀死它。 所以请在运行脚本时加上“&”。

 # ./while_check.sh & 

这是和脚本一样的循环。 创build文件“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 &

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

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

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

 while sleep 3 ; do ls -l ; done 

这比mikhail的解决scheme稍微短一些。

手表是好的,但会清理屏幕。

 watch -n 1 'ps aux | grep php' 

如果你想避免“漂移”,意思是你希望命令每N秒执行一次,无论命令花了多长时间(假设它需要less于N秒),这里有一些bash将每隔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命令来提高这个准确性。

您可以运行以下内容并仅筛选大小。 如果您的文件被称为somefilename您可以执行以下操作

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

许多想法之一

`

如果你想做一些特定的事情,你总是可以这样做:

 repeat 300 do my first command here && sleep 1.5 
 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 

为了更轻松地减less漂移,请使用:

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

由于bash的时间来运行循环结构和睡眠命令来实际执行,所以仍然存在less量的漂移。

提示:':'会变为0即真。