Czy Ubuntu obsługuje „@reboot” w crontab?


23

Czy Ubuntu obsługuje @rebootcrontab?

Znajduję dokumentację sugerującą, że jest obsługiwana, ale czat internetowy twierdzi, że nie jest obsługiwany.

Nie mogę sprawić, by @rebootsekcja działała. Sekcja „po północy” działa dobrze.

Oto przykładowy test z mojego /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

Skrypt powłoki btest.sh

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

uprawnienia

$ 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 .


Czy zastanawiałeś się nad zrobieniem skryptu btest.sh, autostart. askubuntu.com/a/9388/2973
wojox

Istnieje świetna odpowiedź na Unixa i Linuksa: „ [crontab's @reboot działa tylko dla roota]] [1] [1]: unix.stackexchange.com/q/109804/17362
Édouard Lopez

Mam w mojej osobistej regule crontab @reboot, która działa ok, wygląda następująco:@reboot sh /home/me/run-stuff.sh
taneli

Na wypadek, gdyby nikt go nie dostał: miksuje crontabs: / etc / crontab jest crontab użytkownika i wymaga użytkownika. crontab -e to osobisty plik crontab, który używa użytkownika, który jest aktywny w momencie edycji, więc nie wymaga nazwy użytkownika. Oba akceptują @reboot.
Rinzwind

Odpowiedzi:


21

@reboot jest obsługiwany w Ubuntu. Powód, dla którego twój wpis

@reboot /var/kiosk/btest.sh

nie działa w / etc / crontab, ponieważ brakuje pola użytkownika. Prawidłowa składnia to

@reboot root /var/kiosk/btest.sh

2
Przynajmniej w 14.04 tak nie jest i jest źle. „Człowiek 5 crontab” też o tym nie wspomina. Może zależy to od wersji, ale wątpię w to.
vorburger

1
@vorburger, jeśli masz na myśli, że @rebootnie jest obsługiwane, oto link do wiki, który mówi, że tak. BTW, w dniu 14.04, man 5 crontabmówi o@reboot
Fr0zenFyr

4
Na moim Ubuntu 14.04, aby jakiś użytkownik someuserautomatycznie uruchomił komendę podczas (ponownego) rozruchu, musiałem dodać do tego crontab wpis, nie podając nazwy użytkownika:@reboot /var/kiosk/btest.sh
Abdull

1
Dodając do dyskusji, używam Ubuntu 16.4.05. Podczas korzystania z crontab użytkowników komenda @reboot działa bez określania użytkownika do uruchomienia jako i nie działa, gdy użytkownik jest określony.
Keith Reynolds

1

Ubuntu 16.04.5 LTS: Jako root:

crontab -e

Dodaj następujące wiersze:

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 >> wyświetli standardowe wyjście do /path_to_log.log, abyś mógł rozwiązać ten problem


0

Działa 18.04 jako praca zdefiniowana w cron.d.
Wprowadziłem to do pliku zadania:

ŚCIEŻKA = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
@reboot root /path/to/script.sh


1
dodanie roota nie działało dla mnie. Czy używałeś crontab -e jako root?
MKZ

Zapisałem go do pliku start_at_reboot w katalogu /etc/cron.d,
TheR
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.