我有一个bash脚本,我希望它作为一个守护进程运行,因为它会检查一个条件是否有效,并且会休眠一段时间并重复循环。
I demonize the script as : nohup myScript.sh &
如何设置相同脚本的日志记录,因为它具有相同的echo命令,可以打印一些语句,以及如果我想稍后将其删除,如何确保我有脚本的pid。
任何人都可以建议我如何实现相同的目标
答案 0 :(得分:1)
如果查看Advanced Bash-Scripting Guide中的I / O重定向章节,那么您会看到可以通过执行类似于脚本顶部的操作将所有输出重定向到文件:
exec 2>&1
exec 1>>out.log
第一行将stderr重定向到stdout,第二行将stdout追加到out.log。如果这样做,那么你可以使用echo将特定的消息写入日志文件,并且你没有沉默的所有命令的输出也将被写入日志文件。
Bash有很多特殊变量,您可以在Special Shell Variables reference card中了解这些变量。其中一个是$$
,它包含脚本PID。要保存此功能,您可以执行以下操作:
echo $$ > ${0}.pid
这将创建一个文件名<file name of script>.pid
,其中包含脚本的PID。
答案 1 :(得分:1)
将以下行放在脚本的开头。它会保存pid以供日后使用:
echo $$ > myScript.pid
启动脚本捕获输出以进行日志记录(来自 nohup手册页示例):
nohup myScript.sh > myScript.log &
稍后通过以下方式终止脚本:
kill -9 `cat myScript.pid`
简单的myScript.sh示例:
#!/bin/bash
echo $$ > myScript.pid
while :; do echo "Hello"; sleep 1; done