我编写了一个 Perl 脚本作为守护进程,因此我想让操作系统(在我的情况下是 Ubuntu Linux)在启动后自动运行我的 Perl 脚本。
我怎样才能做到这一点?
答案1
为你的 perl 脚本制作一个 shell 脚本包装器
#!/bin/sh - script.sh
# your perl program goes here
/bin/perl /path/to/foobar.pl
确保您已使用以下方式授予可执行权限
chmod +x script.sh
并执行以下操作,
sudo update-rc.d script.sh defaults
这将在每次启动时运行 perl 脚本。
答案2
在过去的 7 年里,情况发生了一些变化。在 Ubuntu 16.04 中,perl 的路径有所不同。此外,您需要提供一堆配置信息在您的 /etc/init.d/foobar.sh 脚本中:
#!/bin/sh foobar.sh
### BEGIN INIT INFO
# Provides: foobar
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: forbarsvr
# Description: foobar daemon for widget serving
### END INIT INFO
sudo -u foobarusr perl /path/to/foobar.pl &
这种调用 perl 的形式允许您以用户身份(提供受约束的安全域)而不是 root 身份运行;要以 root 身份运行,请删除-u foobarusr
。如果您以非 root 用户身份执行,请确保该用户对所有必需资源(例如 perl 脚本本身)具有权限。
尾随的执行&
将你的 perl 脚本作为一项正在进行的(直到完成)任务触发;如果它由于某种原因没有终止,则像守护进程一样。
让你的 foobar 启动器可执行:
sudo chmod +x /etc/init.d/foobar.sh
将您的脚本添加到启动序列中:
sudo update-rc.d foobar.sh defaults
请注意,脚本没有提供路径。