day18-2019年3月25日

如何调试定时任务?

1、查看错误日志

/var/log/cron

学会最小化排除

> /var/log/cron

然后再测试和观察

2、增加执行任务的频率

把频率调快

3、把定时任务执行时间比当前时间拖后5分钟

4、调整系统时间

5、通过脚本日志输出调试定时任务

定时任务输出

* * * * * /bin/sh /server/scripts/bak.sh &> /tmp/bak.log

脚本输出

tar -zcvf oldboy.txt ./data > /tmp/tar.log

注意点:有时候程序只能执行一次。一定要在测试环境测试好,然后直接复制到正式。

代码发布流程:

办公室测试环境==>IDC机房测试环境==>IDC机房正式环境

防止在正式环境发生错误,从而影响用户体验,业务稳定


No space left on device 常见企业故障案例

磁盘满的报错,原因往往是inode被占满了

定时任务没有配置&>/dev/null,定时任务执行的时候把输出给系统root发送邮件。

邮件服务器postfix默认不打开,这些给系统发的邮件就会堆在临时目录(大量小文件存在)

/var/spool/clientmqueue       / 5

/var/spool/postfix/maildrop  /6;7


定时任务手动可以执行,定时任务里不执行。

定时任务在执行脚本的时候,多数情况没有办法加载环境变量,特别是/etc/profile

登陆后怎么操作都对,但是就是放到定时任务不行

命令行bash登录方式

1.手工登录后,加载所有环境变量(~/.bash_profile,~/bash_rc,/etc/profile,/etc/bashrc)

2.定时任务执行脚本属于非登录状态。


把变量放到此文件/etc/profile 把这个文件里的变量定义

具体为crond执行shell时只能识别为数不多的系统环境变量,普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声明下该变量,以确保脚本正确执行。以后要讲其作为一个开发基本规范写上。


用户管理:

/etc/passwd用户所在文件

/etc/shadow密码所在文件

useradd 添加用户实际上就是修改上述两个文件

passwd 改密码实际上就是修改密码所在文件

用户组相关文件

/etc/group用户组所在文件

/etc/gshadow 用户组密码所在文件(废弃)

useradd 添加用户实际上也要修改上述两个文件(因为要创建同名的用户组)

groupadd 添加用户组就是修改上述两个文件


md5sum

[root@oldboy_template-2 scripts]# md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow

c5f043521bd4e2f20085c85a7d25d4dd  /etc/passwd

4e97b090fb1f63a9d299665e4f145ea6  /etc/shadow

eed35bf97e0eeb9aa8e370616ac7f6eb  /etc/group

0f253d839b3b3fbf624a01a7f9407999  /etc/gshadow

[root@oldboy_template-2 scripts]# useradd test123

[root@oldboy_template-2 scripts]# md5sum /etc/passwd /etc/shadow /etc/group /etc/gshadow

ab17c25e66f860a2f30fd640411181c0  /etc/passwd

9fe8807638c0874cd3aa6caa57e65f5d  /etc/shadow

23ea30dac79ccce6b27bf4c050dfaed1  /etc/group

2567da4a4b339ce1b68d6546967009ff  /etc/gshadow



第一列:用户名称

第二列:用户密码

第三列:用户ID

第四列:用户组ID

第五列:用户说明

第六列:用户家目录

第七列:shell解释器

linux是命令行管理。平时输出ls,cp,谁识别,帮我们把我们想要的输出呢?

这个工具就是bash(命令行解释器)

[root@oldboy_template-2 scripts]# awk -F ":" '{print$NF}' /etc/passwd | sort | uniq -c

      6 /bin/bash

      1 /bin/sync

      1 /sbin/halt

     21 /sbin/nologin

      1 /sbin/shutdown

[root@oldboy_template-2 scripts]# cat /etc/shells 

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash












你可能感兴趣的:(day18-2019年3月25日)