centos 7如何设置crontab?

centos的权限要求比较严格,很多在ubuntu下没有问题的,在Centos下可能就会现问题。比如要定时执行一个python脚本。要点如下:

  1. 在管理员模式下:chmod 777 /mydir
  2. crontab -u centos -e
  3. 编辑时,需要指定 SHELL=/bin/bash,而python3命令需要写全路径。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=centos
HOME=/

*  *  *  *  *    cd  /home/centos/send_me_local_ip  && /usr/local/bin/python3 sendlocalip.py
注意,如果不用cd命令,则需要保证可执行文件中的路径全是绝对路径。否则不能正常执行。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

坑:centos虽然在安装时已经选择了时区,但是系统默认时间还是世界标准时,因此需要修改为本地的时区。

方法一:tzselect 选择时区,按提示来即可,但是这种方法不能永久修改时区。

方法二:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 或者 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

修改完成后,需要重启电脑,或者重启2个进程:systemctl restart rsyslog         systemctl restart crond

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[root@localhost ~]# systemctl status crond -l
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-04-02 21:38:12 CST; 49s ago
 Main PID: 22837 (crond)
   CGroup: /system.slice/crond.service
           └─22837 /usr/sbin/crond -n

Apr 02 21:38:12 localhost.localdomain systemd[1]: Started Command Scheduler.
Apr 02 21:38:12 localhost.localdomain crond[22837]: (CRON) INFO (Syslog will be used instead of sendmail.)
Apr 02 21:38:12 localhost.localdomain crond[22837]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 53% if used.)
Apr 02 21:38:13 localhost.localdomain crond[22837]: ((null)) Unauthorized SELinux context=system_u:system_r:system_cronjob_t:s0-s0:c0.c1023 file_context=unconfined_u:object_r:etc_t:s0 (/etc/crontab)
Apr 02 21:38:13 localhost.localdomain crond[22837]: (root) FAILED (loading cron table)
Apr 02 21:38:13 localhost.localdomain crond[22837]: (CRON) INFO (running with inotify support)
Apr 02 21:38:13 localhost.localdomain crond[22837]: (CRON) INFO (@reboot jobs will be run at computer's startup.)

crontab没有运行,查看systemctl status crond 发现报了上面的错误,大致是说SELinus安全策略阻止执行,是因为crontab文件

 

的安全上下文不对(类似linus中的文件用户的操作权限),使用chcon命令修改对象的安全上下文 再重启crond服务

解决办法:

[root@localhost ~]# chcon -R -usystem_u -robject_r -tsystem_cron_spool_t /etc/crontab
[root@localhost ~]# sudo systemctl restart crond

 

转载于:https://www.cnblogs.com/kimkat/p/9251626.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值