如何在 Ubuntu 服务器启动时以非 root 身份运行命令?

如何在 Ubuntu 服务器启动时以非 root 身份运行命令?

有时(这种情况很少见)我的 VPS 提供商必须重新启动我的 VPS 才能修复问题或应用补丁。有什么方法可以在 VPS 重新启动后自动以我的用户身份运行命令吗?我读过有关放入脚本的信息,/etc/rc.local但我的理解是这些脚本将以 root 身份运行。特别是我想运行以下命令:

screen -U -S Irssi irssi
screen -S rtorrent rtorrent

这样,Irssi 将自动重新连接到其 IRC 服务器,rtorrent 将再次开始播种,这样他们就不必等待我看到来自我的 VPS 提供商的电子邮件、登录并手动重新启动它们。任何建议都将不胜感激!

答案1

/etc/crontab

您可以将其设置为以“用户”身份启动某项操作,并提供选项

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

任何 Ubuntu 机器上的默认设置:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

所以基本上你想要的是类似这样的东西:

@reboot {your_user} {your_script}

相关内容