在Linux命令行中,是否有可能每n秒重复一次命令?
假设,我有一个导入正在运行,我正在做
ls -l
检查文件大小是否在增加。我想有一个命令,有这个自动重复。
在Linux命令行中,是否有可能每n秒重复一次命令?
假设,我有一个导入正在运行,我正在做
ls -l
检查文件大小是否在增加。我想有一个命令,有这个自动重复。
当前回答
手表是好的,但会清洁屏幕。
watch -n 1 'ps aux | grep php'
其他回答
在Busybox中,“watch”一秒都不允许,而“sleep”一秒允许。如果这对你来说很重要,试试这个:
while true; do ls -l; sleep .5; done
一个简洁的解决方案,如果您想重复运行命令直到失败,这个解决方案特别有用,并且可以让您看到所有输出。
while ls -l; do
sleep 5
done
如果你想避免“漂移”,这意味着你想让命令每N秒执行一次,而不管它需要多长时间(假设它花费的时间小于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命令来提高这种准确性。
watch -n 5 'ls -l
Runls -l会每隔5秒命令一次吗
输出:
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
Sleep已经返回0。因此,我使用:
while sleep 3 ; do ls -l ; done
这比米哈伊尔的解要短一点。一个小缺点是它在第一次运行目标命令之前处于休眠状态。