1.每隔1分钟,打印一个+号到oldboy.log,请给出crontab完整命令。
#printf + every minute * * * * * echo '+'>> /oldboy.log
2.每隔2个小时将/etc/services文件打包备份到/tmp下(最好每次备份成不同的备份包)。
(1)在命令行测试
root@xiaorui:~# ll /etc/services -rw-r--r-- 1 root root 19605 10月 25 2014 /etc/services root@xiaorui:~# cd /etc/ root@xiaorui:/etc# tar zcvf /tmp/services_$(date +%F-%H).tar.gz ./services
(2)编写脚本:
vim /server/scripts/tar.sh #every two hour tar /services to tmp cd /etc/ tar zcf /tmp/services_$(date +%F-%H).tar.gz ./services
(3)编写crontab -e
#every two hour tar /etc/services to tmp 00 */2 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1
技巧:
1、命令行测试好,规范脚本存放路径。
2、定时任务打包或处理其他工作,不要在屏幕输出,可以放到日志文件里。
3、从定时任务到脚本的工程尽量复制,防止重敲错。
4、执行脚本要叫/bin/sh
5、结尾定向到空,>/dev/null 2>&1
3.每天晚上12点,打包站点目录/var/www/html备份到/data目录下(最好每次备份按时间生成不同的备份包)。
解答:
查看脚本:
cat tar.site.sh cd /var/www && tar zcfp /data/html_$(date +%Y%m%d).tar.gz ./html
定时任务:
##tar /var/www/html by shell scrpt by xiaorui at 20151201 00 00 * * * /bin/sh /server/scripts/tar_site.sh >/dev/null 2>&1
4.每周六、日上午9:00和下午14:00来老男孩这里学习(执行程序/server/script/oldboy.sh代替学习)。
##study from oldboy at 9:00 and 14:00 on sat and sun 00 9,14 * * 6,7 /bin/sh /server/script/oldboy.sh >/dev/null 2>&1
5.请描述下列路径的内容是做什么的?
/etc/sysctl.conf 和系统内核优化有关
/etc/rc.local 开机自启动任务的配置文件
/etc/hosts 域名解析文件
/etc/fstab 系统开机时自动挂载所有分区的配置文件
/var/log/secure 系统安全日志,记录用户登陆本机的信息
6.添加一个用户oldboy,并指定属于sa组,要求组ID为801,uid为808,并且不创建家目录及禁止其登陆。
groupadd -g 801 sa useradd -g sa -u 808 oldboy -M -s /sbin/nologin xiaorui@xiaorui:~$ useradd --help
用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
7.老男孩老师定时任务总结:
书写的方法:
要领1:为定时任务规则加必要的注释
要领2:执行shell脚本任务前加/bin/sh
要领3:定时任务命令或脚本结尾加>/dev/null 2>&1
要领4:定时任务命令或程序最好写到脚本里执行
要领5:在指定用户下执行相关定时任务
要领6:生产任务程序不要随意打印输出信息 tar zcf echo 123 >a.log
要领7:定时任务执行的脚本要规范路径
要领8:配置定时任务的规范操作过程
工作中调试定时任务的方法:
1、增加执行任务的频率调试任务(某些任务不能用于生产环境)
2、调整系统时间调试任务(不能用于生产环境)
3、通过脚本日志输出调试定时任务
4、注意一些任务命令带来的问题
5、注意环境变量导致的定时任务故障
6、通过crond定时任务服务日志调试定时任务
7、其他稀奇古怪的问题调试的方法
crontab定时任务生产应用问题箴言:
1、系统环境变量问题
2、定时任务要用绝对路径
3、脚本权限问题,要用/bin/sh
4、时间变量问题用反斜线转义 例如:\%
5、>/dev/null 2>&1问题
6、定时任务规则之前加注释
7、使用脚本程序替代命令行定时任务
8、避免不必要的程序及命令输出
9、切到目标目录的上一级打包目标
10、定时任务脚本中的程序命令用全路径
8.
9.linux定时任务生产java服务无法执行问题群友案例
http://oldboy.blog.51cto.com/2561410/1541515