Поддерживает ли Ubuntu «@reboot» в crontab?

23

Ubuntu поддерживает @rebootв crontab?

Я нахожу документацию, подтверждающую, что это поддерживается, но веб-болтовня утверждает, что это не так.

Я не могу заставить @rebootраздел работать. Секция "после полуночи" работает нормально.

Вот тестовый пример из моего /etc/crontab:

$ cat /etc/crontab
# /etc/crontab: system-wide crontab

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 )
#
##

# in the beginning - 
@reboot /var/kiosk/btest.sh

# after midnight
30 0     * * *   root    /etc/cron.daily/kiosk/kioskReboot.sh

# end of crontab

сценарий оболочки btest.sh

#!/bin/bash
date > /var/kiosk/STARTFLAG.txt
echo we booted >> /var/kiosk/STARTFLAG.txt
date
echo we booted

разрешений

$ ls -l btest.sh
-rwxrwxrwx 1 root root 147 Aug 21 15:19 btest.sh
$ ls -ld
drwxrwxrwx 14 laptopsanytime root 4096 Aug 21 16:30 .

user186171
источник
Задумывались ли вы о создании скрипта btest.sh, автозапуска. askubuntu.com/a/9388/2973
wojox
На Unix & Linux есть отличный ответ: «@reboot crontab работает только для root?] [1] [1]: unix.stackexchange.com/q/109804/17362
Эдуард Лопес,
В моем личном правиле crontab @reboot все работает нормально, выглядит так:@reboot sh /home/me/run-stuff.sh
taneli
На случай, если никто не понял: он смешивает crontabs: / etc / crontab - это пользовательский crontab, для которого требуется пользователь. crontab -e является личным crontab и использует пользователя, который активен в момент редактирования, поэтому не требует имени пользователя. Оба принимают @reboot.
Rinzwind

Ответы:

21

@reboot поддерживается в Ubuntu. Причина, по которой ваша запись

@reboot /var/kiosk/btest.sh

не работает в / etc / crontab, потому что отсутствует пользовательское поле. Правильный синтаксис будет

@reboot root /var/kiosk/btest.sh
Теему Тойвола
источник
2
По крайней мере, в 14.04 это не тот случай, а неправильный. «Человек 5 crontab» также не упоминает об этом. Возможно, это зависит от версии, но я сомневаюсь в этом.
Ворбургер
1
@vorburger, если вы имеете в виду @reboot, не поддерживается, то вот ссылка на вики, которая говорит, что это так. Кстати, в мой 14.04, man 5 crontabдействительно говорит о@reboot
Fr0zenFyr
4
На моей Ubuntu 14.04, чтобы какой-то пользователь someuserавтоматически запускал команду при (пере) загрузке, мне нужно было добавить в crontab этого пользователя запись без указания имени пользователя:@reboot /var/kiosk/btest.sh
Abdull
1
Добавляя к обсуждению, я использую Ubuntu 16.4.05. При использовании пользовательского crontab команда @reboot работает без указания пользователя для запуска от имени, а не при указании пользователя.
Кит Рейнольдс
1

Ubuntu 16.04.5 LTS: как root:

crontab -e

Добавьте следующие строки:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@reboot /path_to_script.sh 2>&1 >> /path_to_log.log

2> & 1 >> выведет стандартный вывод в /path_to_log.log, так что вы можете устранить это

MKZ
источник
0

Он работает 18.04 как задание, определенное в cron.d.
Я ввел это в файл задания:

PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
@reboot root /path/to/script.sh

þér
источник
1
добавление рута у меня не сработало. Вы использовали crontab -e как root?
MKZ
Я сохранил его в файл start_at_reboot в каталоге /etc/cron.d,
TheR