授权普通用户Linux crontab定时任务

项目需求,在Linux下做个定时任务,而且是普通用户下可控的。网上找资料,方向没找对,就暂时用root用户做定时任务。最后别人提示用sudo,才有了这篇文章。

下面就说一下方法:

1. 创建任务(普通用户)
crontab -e 编辑计划任务

加上任务,如下行

*/2 * * * * cd /home/sky/apache-activemq-5.11.1/bin/;./activemq start(每两分钟启动一次,见下面语法结构)

2. 给普通用户授权sudo(root用户)
给普通用户授权sudo,用sudo 提升普通用户service命令权限

1)切换root用户,可以用vim /etc/sudoers对文件编辑(先赋权限chmod u+w /etc/sudoers),但最好使用visudo命令编辑,原因两点:一是它能够防止两个用户同时

修改它;二是它也能进行有限的语法检查。

2)找到"root ALL=(ALL) ALL",在下面加一行“XXX ALL=(ALL) ALL”即完成授权 

“XXX”是用户名。

3)此时该用户拥有root所有权限,要做一下限制,先说一下上面三个ALL的含义:

①网络中的主机名(建议用ALL,实际不确定远程主机名),

②目标用户,也就是以谁的身份去执行命令(建议ALL)

③命令(最好不用ALL,否则方法二就没意义了,多个命令逗号隔开),默认5分钟sudo密码过期,怕麻烦命令前加“NOPASSWD:”  

所以上面增加内容应改为:

“XXX ALL=(ALL) NOPASSWD:/sbin/service”

3. 重新启动任务计划
方法一:    切换到root用户    service crond restart(安全性考虑,不建议此方法)

方法二:    切换普通用户,执行sudo service crond restart即可

4. 语法机构
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 - 需要执行的命令(1、多行命令用“;”或者“&&”隔开,“;”不管命令是否出错都会连续执行下去,“&&” 出错则停止。 2、可以是脚本)

(网上很多资料)

5. 常用命令
crontab –u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数  

crontab –l //列出某个用户cron服务的详细内容 

crontab –r //删除某个用户的cron服务 

crontab –e //编辑某个用户的cron服务

service crond start

service crond stop

service crond restart

service crond reload
--------------------- 
作者:dahangg 
来源:CSDN 
原文:https://blog.csdn.net/dahangg/article/details/50537666 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/w892824196/article/details/85604377