Если вы хотите, чтобы задача выполнялась в пользовательском режиме, вы можете сделать то, что я сделал, и просто добавить ее sudo -u <user>перед тем, как выполнить задачуanacrontab
Вы можете настроить отдельный экземпляр anacron для запуска в пользовательском режиме:
Создайте .anacronпапку в вашем домашнем каталоге и в ней две подпапки, etcи spool:
mkdir -p ~/.anacron/{etc,spool}
Создайте новый файл ~/.anacron/etc/anacrontabс содержимым, похожим на следующее:
# /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# period delay job-identifier command110 testjob test.sh
Добавьте следующую строку в ваш crontab, используя crontab -e:
Просто чтобы подтвердить, это запускает указанный сценарий от имени пользователя, поэтому whoamiв сценарии будет указано имя пользователя?
Кристоф
хм да, при дальнейшем осмотре я не понимаю, почему нет ...
Кристоф
3
Я думаю, что вам нужно anacronпериодически бегать ; кажется, один раз запустить, а затем выйти. Системный анакрон вызывается один раз в час. Я предполагаю, что подобная стратегия будет работать здесь, то есть вызов пользователя anacronот пользователя crontab.
Sparhawk
1
@Sparhawk согласился, в частности, Ubuntu 15.10 anacron использует и то, /etc/apm/event.d/anacronи другое, /etc/init/anacron.confчтобы позаботиться о перезапусках.
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
1
Вам нужно запускать анакрон ежечасно с помощью задания cron, например,01 * * * * /usr/sbin/anacron -t /home/user/.anacron/etc/anacrontab -S /home/user/.anacron/spool
Саймон Вудсайд
0
Это сработало для меня (спасибо), но я не использовал последний шаг, указанный в ответе:
Затем добавьте следующую строку в ваш ~/.profile:
Я использую Ubuntu Studio 12.10 Quantal, и в моем случае вместо этого последнего шага я поместил здесь один вкладыш: «Меню приложений» → «Настройки» → «Диспетчер настроек», затем в Диспетчере настроек в разделе «Сеанс и запуск», затем Вкладка «Автозапуск приложения».
Это для тех из нас, кто является пользователями GUI, потому что ~/.profilebash получает только когда запускает интерактивную оболочку входа в систему (даже ~/bashrcне очень полезно, так как это происходит только когда bash запускает интерактивную оболочку).
sudo -u <user>
перед тем, как выполнить задачуanacrontab
Ответы:
Вы можете настроить отдельный экземпляр anacron для запуска в пользовательском режиме:
Создайте
.anacron
папку в вашем домашнем каталоге и в ней две подпапки,etc
иspool
:Создайте новый файл
~/.anacron/etc/anacrontab
с содержимым, похожим на следующее:Добавьте следующую строку в ваш crontab, используя
crontab -e
:источник
whoami
в сценарии будет указано имя пользователя?anacron
периодически бегать ; кажется, один раз запустить, а затем выйти. Системный анакрон вызывается один раз в час. Я предполагаю, что подобная стратегия будет работать здесь, то есть вызов пользователяanacron
от пользователяcrontab
./etc/apm/event.d/anacron
и другое,/etc/init/anacron.conf
чтобы позаботиться о перезапусках.01 * * * * /usr/sbin/anacron -t /home/user/.anacron/etc/anacrontab -S /home/user/.anacron/spool
Это сработало для меня (спасибо), но я не использовал последний шаг, указанный в ответе:
Я использую Ubuntu Studio 12.10 Quantal, и в моем случае вместо этого последнего шага я поместил здесь один вкладыш: «Меню приложений» → «Настройки» → «Диспетчер настроек», затем в Диспетчере настроек в разделе «Сеанс и запуск», затем Вкладка «Автозапуск приложения».
Это для тех из нас, кто является пользователями GUI, потому что
~/.profile
bash получает только когда запускает интерактивную оболочку входа в систему (даже~/bashrc
не очень полезно, так как это происходит только когда bash запускает интерактивную оболочку).источник
.profile
меня всегда хорошо работала строка в (Ubuntu 12.04 здесь).