Linux定时任务crontab 和sudo授权管理

**只是个人学习笔记,抒写比较混乱,慎看。在此也非常感谢各位大牛在网上上传的教程和视频;***

一、crontab是一种周期性执行任务的工具;
1、系统执行的工作:系统周期性要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可以每个用户自行设置;
3、每星期日志备份;每月数据库备份;凌晨业务数据统计等;

Minute Hour Day Month Dayofweek command
分钟 小时 天(日期) 月 天每星期 命令
(0-59) (0-23) (1-31) (1-12) (0-7)

Crontab实践练习:
1、安装检查Crontab服务
检查是否安装:crontab -l
检查服务是否启动:service crond status
安装crontab
yum install vixie-cron
Yum install crontabs
新增调度任务的两种方法:
crontab -e vi /etc/crontab
crontab -e -u admin 可以给普通用户设置定时任务(-u表示普通用户)

每分钟打印当前时间到一个日志文件中
*/1***date >> /tmp/log.txt
tail -f /tmp/log.txt
表示任何时间都匹配;
,选取执行;-之间执行;*/2每分钟执行;

2、案例:
每晚的21:30重启apache
30 21 service httpd restart
每月1、10、22日的4:45重启apache
45 4 1,10,22
service httpd restart
两分钟重启Apache服务器
/2 service httpd restart

3、Crontab的配置
4、Crontab的日志
/var/log/cron文件保存cron记录日志
cd /var/log ls -l cron*
cat /etc/crontab

cd /var/spool/mail 可以发送root邮箱

5、Crontab常见错误
环境变量
cd ~ ls -a bash_profile vi bash_profile
APPDIR=/hyk export APPDIR 系统配置
source .bash_profile 启动
echo $APPDIR 输出

crontab -e 个人配置
/1 * echo $APPDIR >> /tmp/appdir.log
Date date date
cat /tmp/appdir.log 下面是空滴;
cat .bash_profile 配置信息没有在运行脚本的时候载入进去;

命令行双引号中使用%时,未加反斜线\
在计划任务里必须得加反斜线(就是设置定时任务时)
第三和第五个域之间执行的是“或”操作
四月的第一个星期日早晨1时59分运行a.sh
59 1 1-7 4 test ~date +\%w~ -eq 0 && /root/a.sh
Date +%w 是1 0成功 1失败
test date +%w -eq 0
echo $?
分钟设置误用
两个小时运行一次
0 /2 command
**

二、sudo用途 (苏度)
sudo允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,
让root 把本来只能超级用户执行的命令赋予普通用户执行;
Sudo操作对象是系统命令;

root赋予权限 visudo 实际修改的是/etc/sudoers文件
Sudo -l 查询是否授权
Whereis 查询地址
root All=(ALL) ALL
用户名 被管理主机=(可使用身份)授权命令(绝对路径)

实践练习:
1、假设普通用户a没有重启功能,下面授权普通用户a继承重启功能;
shutdown -r now 重启命令
root端:visudo
a ALL=(ALL) /sbin/shutdown -r now 越详细执行权限越低
a端:sudo /sbin/shutdown -r now

2、授权普通帐号a可以创建用户和密码,但不能修改root密码;
root端:visudo
a ALL=/usr/sbin/useradd
a ALL=/usr/bin/passwd (不正确的,权限太大)
a ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd “”,
!/usr/bin/passwd root

a端:sudo /usr/sbin/useradd 帐号名
sudo /usr/sbin/passwd

猜你喜欢

转载自blog.51cto.com/14046482/2314116