Я хочу запустить задание с cron при перезагрузке как конкретный пользователь. Я смог сделать это успешно, используя crontab для записи в / var / spool / cron / crontabs / username с чем-то вроде:
@reboot ./run.sh >>~/tracefile 2>&1
Однако я хочу использовать /etc/cron.d/filename. Для заданий Cron в этом файле требуется дополнительный столбец, чтобы указать, какой пользователь запускает, поэтому я использую:
@reboot wwwuser ./run.sh >>~/tracefile 2>&1
Похоже, это не работает. Могу ли я использовать @reboot с именем пользователя в файле cron.d?
Я думаю, что вместо добавления @reboot wwwuser ...
к /var/spool/cron/crontabs/username
ты должен бежать crontab -e
как пользователь wwwuser и добавить:
@reboot ./run.sh >>~/tracefile 2>&1
На всякий случай обязательно используйте полный путь к скрипту.
Если вы вносите эти изменения программно, вы можете попробовать следующее:
#write out current crontab
crontab -u wwwuser -l > mycron_wwwuser
#echo new cron into a temp cron file
echo "@reboot ./run.sh >>~/tracefile 2>&1" >> mycron_wwwuser
#install new cron file
crontab -u wwwuser mycron_wwwuser
#remove the temp cron file
rm mycron_wwwuser
... или лучше вот этот:
crontab -u wwwuser -l | { cat; echo "@reboot ./run.sh >>~/tracefile 2>&1"; } | crontab -u wwwuser -