Как я могу запустить команду при запуске на сервере 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}
Другие вопросы по тегам