不使用 inittab 创建持久进程

不使用 inittab 创建持久进程

我有一个运行 Ubuntu 14.04 LTS x64 的虚拟服务器,我想创建一个持久进程,该进程会随系统重新启动并在系统崩溃时重新启动。

为此,我将以下行添加到 etc 目录中的“inittab”中:

test:5:respawn:echo "HELLO TEST" > /test.log
sometestname:234:/var/path/to/process/myprocess

运行“init q”或“telinit q”后,没有任何反应。 test.log 文件未创建,进程未启动(使用 pstree 时未列出),系统日志中也没有任何内容。重新启动服务器也没有帮助。

我还尝试使用 systemd 创建新服务,方法是使用以下命令在“/etc/systemd/system/”中创建新的“myprocess.service”:

[Unit]
Description=Process Name

[Service]
ExecStart=/var/path/to/process/myprocess
Restart=restart-always

[Install]
WantedBy=multi-user.target

同样,服务器重新启动后该进程就不存在了。

有没有其他方法可以在 Ubuntu 中创建持久进程?

此外,该进程充当服务器,但也可以接受用户输入。由于它大部分时间都会作为后台进程运行,是否可以随意将其“附加”到主控制台以运行一些命令,然后稍后将其分离?我正在使用 putty 来远程访问服务器。

答案1

您可以使用 crontab。 crontab 可以每分钟启动一个进程,该进程应该检查它是否已经在运行,如果是则退出。http://linux.die.net/man/1/crontab

答案2

inittab 会知道进程退出得太快并停止。尝试使用一个小的 shell 脚本,等待 60 秒然后退出。您的 echo 命令将无法正常工作。

相关内容