如何在 Ubuntu 服务器启动后自动运行 Perl 脚本?

如何在 Ubuntu 服务器启动后自动运行 Perl 脚本?

我编写了一个 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

请注意,脚本没有提供路径。

相关内容