[英]Shell scripting while loop
#!/bin/sh
export TERM=linux
start()
{
logger "starting logs..."
NOW=$(date +"%F")
FILE="log-$NOW"
sh -ci "myapp -w /opt/home/logs/$FILE &> /dev/tty${#} &" >> /dev/null
wait
logger "myapp started"
}
stop()
{
kill -9 $(pidof myapp)
}
CDAY=$(date +"%d")
start
while [1]; do
if [ $CDAY -ne $(date +"%d") ]
then
logger "loop"
CDAY=$(date +"%d")
stop; start
fi
done
接下来是逻辑:如果当前日期已更改(第二天到来),myapp将开始记录某些进程,脚本将停止myapp并再次启动它以创建新的日志文件
我是shell脚本的新手,它无法按预期工作,我在哪里错了?
UPD:似乎虽然循环不起作用,但脚本没有加入,logread中没有logger "loop"
UPDD:对while循环进行while :
循环的更正语法,然后它开始工作。 谢谢你们!
在黑暗中,我的野蛮行为是删除最后一行的
您可能会从在while循环中添加fi
,因为
if
似乎没有匹配项。
sleep 120
左右的sleep 120
而受益,否则您将浪费CPU时间并尽可能快地实现这一目标,而没有太多的上升空间。 错误可能与if [ $CDAY !=$(date +"%d") ]
,我相信您必须在运算符的两侧都留有空格,例如: if [ $CDAY != $(date +"%d") ]
。 由于您正在执行整数比较,因此您可能还应该将运算符更改为-ne
因为!=
用于字符串比较。 我建议将%d
更改为%M
以便它可以更快地滚动,这对于确保它可以正常工作很有帮助。 ( %F
也需要更改为更具体的内容,例如%c
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.