【发布时间】:2014-05-12 13:06:00
【问题描述】:
我想要一个执行以下操作的脚本:
if process_name not running
start process from path /home/data/process_name
write "date: process start" to /home/data/log.txt
我从来没有写过bash 脚本,也不知道该怎么办。
【问题讨论】:
我想要一个执行以下操作的脚本:
if process_name not running
start process from path /home/data/process_name
write "date: process start" to /home/data/log.txt
我从来没有写过bash 脚本,也不知道该怎么办。
【问题讨论】:
在 Debian 和 Ubuntu 上,您可以使用 start-stop-daemon。它有各种选项来帮助识别正确的进程,这样您就不会最终启动它两次或杀死错误的进程。手册页中的一个示例:
Start the food daemon, unless one is already running (a process named
food, running as user food, with pid in food.pid):
start-stop-daemon --start --oknodo --user food --name food --pidfile /var/run/food.pid --startas /usr/sbin/food --chuid food -- --daemon
此命令确保进程属于正确的用户,具有正确的名称,并且具有与/var/run/food.pid 中的匹配的进程 ID。当然,您不必全部使用它们。
【讨论】:
试试这个:
if ! pgrep process_name; then
/home/data/process_name &
echo "$(date): Process start" >> /home/data/log.txt
fi
如果你想杀死进程然后启动它,试试这个:
if ! pgrep process_name; then
/home/data/process_name &
echo "$(date): Process start" >> /home/data/log.txt
else
killall process_name
/home/data/process_name &
echo "$(date): Process start" >> /home/data/log.txt
fi
【讨论】: