Ubuntu在crontab中支持“ @reboot”吗?


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 .


您是否考虑过使脚本btest.sh自动启动。askubuntu.com/a/9388/2973
wojox

有在Unix和Linux的一个伟大的答案[crontab中的@reboot仅适用于根?] [1] [1]:unix.stackexchange.com/q/109804/17362
爱德华·洛佩兹

我的个人crontab @reboot规则有效,看起来像这样:@reboot sh /home/me/run-stuff.sh
taneli 2014年

万一没人知道:他正在混用crontab:/ etc / crontab是用户crontab,需要一个用户。crontab -e是个人crontab,使用在编辑时处于活动状态的用户,因此不需要用户名。两者都接受@reboot。
Rinzwind

Answers:


21

Ubuntu中支持@reboot。您进入的原因

@reboot /var/kiosk/btest.sh

在/ etc / crontab中不起作用是因为它缺少用户字段。正确的语法是

@reboot root /var/kiosk/btest.sh

2
至少在14.04中不是这样,这是错误的。“ man 5 crontab”也没有提及。也许这取决于版本,但是我对此表示怀疑。
vorburger '16

1
@vorburger如果@reboot不支持,那么这里是指向Wiki链接。BTW在我的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 >>将stdout输出到/path_to_log.log,因此您可以解决此问题


0

它在.04中定义为工作的版本cron.d
我在作业文件中输入了这个:

PATH = / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin
@重新引导根目录/path/to/script.sh


1
添加root对我不起作用。您是否使用crontab -e作为root用户?
MKZ

我将其保存到/etc/cron.d目录中的文件
start_at_reboot中
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.