我想我可以每分钟运行一次cron作业,或者5分钟,并以某种方式检查进程是否已经运行(不知道该怎么做)。
这是最好的方式,还是有另一个像我的主目录中的.startup脚本,我可以把一个脚本?
这里的问题似乎是你在这个主机上没有root访问权限来改变像/etc/rc.local这样的系统启动脚本。 在用户crontab中使用@reboot行的想法是值得探索的。 我没有试过,作为一个普通的用户,但它应该工作。
另一个想法是你说每隔几分钟在你的用户crontab中运行一些东西,检查你的进程是否正在运行,如果没有,重新启动。 例如:
*/5 * * * * ps -u $USER | grep myscript >/dev/null || $HOME/bin/myscript
要非常小心这种事情 – 如果你犯了一个错误,你最终会每5分钟开始一个额外的程序副本,最终可能会导致很多问题。
你可以使用chkconfig – 或者懒惰,只需要在你的crontab中运行
@reboot命令在这里
这个链接可以帮助你很多(当然,省得我打字)
http://linuxhelp.blogspot.com/2006/04/enabling-and-disabling-services-during_01.html
根据你的发行版(你没有提到它),你有一个相当广泛的select:chkconfig,rcconf,/etc/(rc.d/)rc.local,init.d \ rc.d中的符号链接启动脚本 – 但所有这些都需要root权限。
我假设你没有访问sudo。 这些只是一个选项,在crontab中添加一个脚本来检查进程是否正在运行,如果没有,那么启动它。 您还可以获得一种可用性增强(例如,如果您的进程崩溃,则会再次启动)。
我承担这一点是:
#!/bin/sh proc=process_name `ps aux > /tmp/.$proc; awk '/$proc/{print $2}' /tmp/.$proc > /tmp/.x` #if process is alive then copy its PID in .x if [ -s /tmp/.x ]; then #-s file True if file exists and has a size greater than zero. echo k #.x is greater than zero => process is alive, all ok else /etc/init.d/daemon start _or_whatever_startup file_ #.x was zero, process dead. fi `rm -f /tmp/.$proc && rm -f /tmp/.x`