我有一个应用程序会在特定时间自行关闭,是否有一种方法可以让bash脚本在应用程序关闭后再执行某些命令(如移动日志文件,清理临时文件),然后重新启动它?
答案 0 :(得分:3)
重新发明这个轮子是可能的,尽管不是一个好主意。
这可以很简单:
while :; do
./run-your-process
do-some-cleanup
done
但是真的 - 不要。使用runit,upstart,daemontools,systemd,supervisord或许多其他工具之一,它们将为您自动完成此过程。
答案 1 :(得分:0)
如果您在后台启动脚本中的主进程,则可以使用&set -bm'来启用bash中的作业控制。然后陷阱SIGCHLD并进行清理并在信号处理程序中重新启动。
#!/bin/bash
set -bm
childexit() {
... cleanup and restart
}
trap 'childexit' SIGCHLD
mainprocess &