У меня есть работа, которая работает всегда, как только она начинается. Поэтому я хочу запустить его только один раз после ввода его в файл "crontab -e" и сохранения его (или) всякий раз, когда происходит перезагрузка.
Как этого добиться?
У меня есть работа, которая работает всегда, как только она начинается. Поэтому я хочу запустить его только один раз после ввода его в файл "crontab -e" и сохранения его (или) всякий раз, когда происходит перезагрузка.
Как этого добиться?
Ответы:
Если вы хотите, чтобы команда запускалась один раз позднее, используйте at
команду.
Если вы хотите, чтобы команда запускалась один раз при загрузке системы, правильное решение - использовать либо:
@reboot
специальным префиксом (см. man-страницу)Последний вариант - единственный вариант для пользователя без полномочий root.
at now
@reboot
.
Вы можете использовать в (1), чтобы запустить работу в какой-то момент в будущем. Однако, если вы хотите запустить что-то при загрузке, и оно продолжит работать само по себе, может быть, вам нужна запись в /etc/init.d/ для этого? Это позволит вам запустить его при загрузке.
kill
(при условии, что у вас есть разрешения для этого, что вы делаете для своих собственных процессов). Создание сценария инициализации действительно легко. Ищите /etc/init.d/
сценарий, который не очень длинный и смоделируйте ваш после него, или Google для making init scripts (your distribution)
.
/etc/init.d/skeleton
на openSuSE), который вы можете адаптировать для своего использования.
Работа, которая выполняется только один раз и выполняется до тех пор, пока вы не скажете ей умереть, называется «демон». Обычно они запускаются через сценарии инициализации в /etc/init.d/.
Если ваша работа заканчивается в какой-то момент и может считаться одноразовой работой, то вы можете посмотреть на команду at. Например, если бы я хотел запустить команду поиска в 10 вечера сегодня вечером, и только один раз я бы сделал:
$ at 10PM
at> find /root > /root/find_results.list
at> <EOT>
job 3 at 2010-02-10 22:00
Посмотрите на команду