定时任务要领:
* * * * * /bin/sh /server/scripts/bak.sh &>dev/null
如何调试定时任务?
1查看错误日志
/var/log/cron
学会最小化排除:
先清空,>/var/log/cron
然后再测试和观察
2增加执行任务频率调试任务
把频率调快
3把定时任务执行时间比当前时间拖后5分钟
4调整系统时间
5通过脚本日志调试定时任务
定时任务输出
* * * * * /bin/sh /server/scripts/bak.sh&>/tmp/bak.log
脚本输出
tar zcvf oldboy.tar.gz./data >./tmp/tar.log
注意点:有时候程序只能执行一次,一定要在测试环境测试好,然后直接复制到正式
常见企业故障案例
磁盘满的报错
原因往往是inode被占满了。因为定时任务没有加到&>dev/null,定时任务执行的时候把输出给系统root发邮件
程序可以手动执行,放定时任务里不执行
定时任务在执行的时候,多数情况没办法加载环境变量,特别是/etc/profile,登录后怎么操作都对,但就是放到定时任务里不行。
命令行:bash登录方式
1手工登录后,加载所有环境变量
2定时任务执行脚本属于非登录状态
登录系统后,命令行出现如下提示:为什么?
[root@oldboyedu/home/chenglong1]# su - chenglong1
-sh-4.2$
解答:
用户的环境变量缺失导致的。
执行如下命令解决添加用户要用的文件
-sh-4.2$ cp/etc/skel/.bash* .
-sh-4.2$ source./.bash_profile ./.bashrc
export PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\]\w\[\e[0m\]]\$'
用户管理知识
用户相关文件:
/etc/passwd 用户所在文件
/etc/shadow 密码所在文件
useradd oldboy 添加用户实际上就是修改上述两个文件
passwd oldboy 改密码实际上就是密码所在文件
用户组相关文件:
/etc/group 用户组所在文件
/etc/gshadow 用户组密码所在文件(废弃状态)
useradd oldboy 添加用户实际上也会修改上述两个文件(因为要创建同名的用户组)
groupadd sa 添加用户组就是修改上述两个文件
md5sum 给文件设置指纹(计算和检查MD5数字信息)
用户密码所在文件
/etc/passwd文件:
linux是命令行管理,平时输入ls,cp,谁识别帮我们把我们想要的要的输出,这个工具就是bash(命令行解释器)
用户登录:输入命令,希望哪个解释器解释(结尾列决定)
/etc/passwd:bingbing:x:1004:1006::/home/bingbing:/bin/bash
centos7默认解释器就是bash
/etc/default/useradd文件 useradd命令的配置文件
bash是sh的扩展,sh是bash的软连接。
[root@oldboyedu~]# tail -1 /etc/shadow
shadow文件各字段含义
bingbing 用户
:!! 密码
:17980 最近更改密码的时间
:0 禁止修改密码的天数
:99999 用户必须更改口令的天数
:7 警告更改密码的期限
: 在用户密码过期之后到禁用账户的天数
: 从1970年1月1日起,到用户被禁用的天数
: 保留
/etc/default/useradd文件 useradd命令的配置文件
默认shell就是/bin/bash
为什么默认的家目录在home下
为什么默认的家目录/home/用户名下面有很多隐藏文件,从哪来的。
就是/etc/default/useradd文件配置的。
useradd -D -s /bin/sh
/etc/skel目录,创建用户默认就会i把此目录下的文件拷贝到/home/用户名下
/etc/skel 为每个用户提供环境变量的目录
/etc/login.defs /etc/skel /etc/default/useradd
编辑/etc/passwd,通过注释来删除。
不交互设置密码:
方法1:
[root@oldboyedu~]# echo 123456|passwd --stdin oldgirl
Changing passwordfor user oldgirl.
passwd: allauthentication tokens updated successfully.
方法2:
[root@oldboyedu~]# echo 123456 >pass
[root@oldboyedu~]# cat pass
123456
[root@oldboyedu~]# passwd --stdin oldgirl
Changing passwordfor user oldgirl.
passwd: allauthentication tokens updated successfully.
[root@oldboyedu~]# tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}'>user.log
[root@oldboyedu~]# cat user.log
gongli1:oldboy
gongli2:oldboy
chenglong1:oldboy
zongsheng:oldboy
方法1:
[root@oldboyedu~]# chpasswd
方法2:
[root@oldboyedu~]# tail -4 /etc/passwd|awk -F ":" '{print$1":oldboy"}'|chpasswd
命令笔记
useradd 添加普通用户
-u制定UID
-s指定登录的shell解释器
-M不创建家目录
-c添加用户说明
-d 指定家目录
-e 设定登录截止日期
groupadd 添加用户组
passwd 给用户修改密码
--stdin从标准输入接收密码接受并设置
chpasswd 从标准输入批量更改用户密码
usermod 修改用户的组
参数同useradd大部分一样
userdel 删除用户
-r 递归删除用户目录及下内容
备份或确认家目录下无有用内容