ylg娱乐官网ubuntu下 rc.local的脚本不运营

Ubuntu rc.local 不执行

ubuntu下想要开机启动如下脚本

到了约定时间,自动执行任务:

CentOS定时任务处理

ylg娱乐官网 1加任务:
crontab -e 0 */1 * * * command 0 */2 * * *
command查询任务是否加了: crontab -l 0 */1 * * * command 0 */2 *
* * command
基本格式 :

minute      hour      day      month      dayofweek      command
  • minute— 分钟,从 0 到 59 之间的任何整数

  • hour— 小时,从 0 到 23 之间的任何整数

  • day— 日期,从 1 到 31
    之间的任何整数(如果指定了月份,必须是该月份的有效日期)

  • month— 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如
    jan、feb 等等)

  • dayofweek— 星期,从 0 到 7 之间的任何整数,这里的 0 或 7
    代表星期日(或使用星期的英文简写如 sun、mon 等等)

  • command
    要执行的命令(命令可以是ls /proc >> /tmp/proc之类的命令,也可以是执行你自行编写的脚本的命令。)

下面为例子

*  *  *  *  *  command
分 时 日 月 周 命令第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令crontab文件的一些例子:30 21 * * *
/usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。45 4 1,10,22 * *
/usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。10 1 * * 6,0
/usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。0,30 18-23 * * *
/usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。0 23 * *
6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。* */1 * * *
/usr/local/etc/rc.d/lighttpd restart
每一小时重启apache* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd
restart
晚上11点到早上7点之间,每隔一小时重启apache0 11 4 * mon-wed
/usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache0 4 1 jan *
/usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

前5个字段分别表示:分钟:0-59小时:1-23日期:1-31月份:1-12星期:0-6(0表示周日)一些特殊符号:*
表示任何时刻,  表示分割- 表示一个段,如第二端里: 1-5,就表示1到5点/n
表示每个n的单位执行一次,如第二段里,*/1,就表示每隔1个小时执行一次命令。也可以写成1-23/1.
时间格式顺序:%Y-%m-%d-%H-%M-%S

加任务: crontab -e 0 */1 *
* * command 0 */2 * * * command查询任务是否加了: crontab -l 0
*/1 * * * command 0 */2 * * * command 基本格式…

把spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -C 5 -f
php5-cgi -P /var/run/fastcgi-php.pid

1.脚本代码

#!/bin/sh  
sudo mount -t cifs //10.5.133.203/yangqj/liuyh /mnt/workspace -o user=yangqj,password=123456,rw,gid=1000,uid=1000  

sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.5.133.254  
sudo route del default  
sudo route add default gw 192.168.101.1

 

加入到rc.local中,重启后命令就是不执行。

2.添加到启动项

把脚本添加到/etc/rc.local的exit 0之前
sudo sh /home/flysea/setnet.sh

需要软件包crond

网上搜到原因:

3.问题是,脚本并没有执行?

接着百度,网上有如下几种方法

[root@u ~]# rpm -qa | grep cron

rc.local的第一行是: #!/bin/sh -e

1.修改sh的软链接 (失败)

sudo rm /bin/sh  
sudo ln -s /bin/bash /bin/sh  

cronie-1.4.11-17.el7.x86_64

就是这个 -e ,只要任何一条命令出错,脚本就会停止执行。

2.删除rc.local里面的 -e (失败)

#!/bin/sh -e

就是这个 -e ,只要任何一条命令出错,脚本就会停止执行。
  删除 -e 命令就能继续执行。

crontabs-1.11-6.20121102git.el7.noarch

删除 -e 命令就能执行。

3.最后才找到解决方案(成功)

在脚本中加入 一个sleep延时,

#!/bin/sh  
sleep 3  
sudo mount -t cifs //10.5.133.203/yangqj/liuyh /mnt/workspace -o user=yangqj,password=123456,rw,gid=1000,uid=1000  

sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.5.133.254  
sudo route del default  
sudo route add default gw 192.168.101.1  

开机执行成功

具体的原因是:
rc.local默认的执行用户是root,权限也是。killall -QUIT
uwsgi是异步的,中间要sleep 1,歇一秒,不然直接start会继续被杀掉。

cronie-anacron-1.4.11-17.el7.x86_64

不过我没有这么做,我直接把命令放到第一个命令行,一样可以执行。

[root@u ~]#

 

这些软件包都自动安装的,不用自己安装

ylg娱乐官网 2

开机自动就开启:

[root@u ~]# systemctl status crond

 

crontab命令编写计划任务

语  法:crontab [-u
<用户名称>][配置文件] 或 crontab [-u
<用户名称>][-elr]

crontab任务配置基本格式:
*  *  *  * 
*  command

分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 
命令

第1列表示分钟1~59
每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)day  of week    0-7 (0 or 7 is Sunday,
or

              use
names)
第6列要运行的命令

参  数: 
-e
 编辑该用户的计时器设置。 
-l
 列出该用户的计时器设置。 
-r
 删除该用户的计时器设置。 
-u<用户名称>
 指定要设定计时器的用户名称。

 

注意:

1 查看计划任务的执行:tail -f /var/log/cron

2
写计划任务时,命令必须加上绝对路径,否则会出现这种情况:从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,比如*
* * * * reboot就会出现这种情况,需要将reboot写成/usr/sbin/reboot

 

crontab例子:

30 21 * * * /usr/local/etc/rc.d/apache
restart #每晚的21:30 重启apache

45 4 1,10,22 * *
/usr/local/etc/rc.d/apache restart #每月1、10、22日的4 :
45重启apache

10 1 * * 6,0 /usr/local/etc/rc.d/apache
restart #每周六、周日的1 : 10重启apache

0,30 18-23 * * *
/usr/local/etc/rc.d/apache restart #每天18 : 00至23 :
00之间每隔30分钟重启apache

0 23 * * 6 /usr/local/etc/rc.d/apache
restart #每星期六的11 : 00 pm重启apache

* 23-7/1 * * *
/usr/local/etc/rc.d/apache restart
#晚上11点到早上7点之间,每隔一个小时的每分钟重启 apache

发表评论

电子邮件地址不会被公开。 必填项已用*标注