10.34-10.35 系统日志和screen
日志记录了每天系统发生的各种各样的事,可以通过查看日志检查错误发生的原因。或者受到攻击时留下的痕迹。
/var/log/messages 是核心的系统日志,包含了启动消息,以及系统运行时的其他状态,以及用户安装的软件的日志也会在这里。通常,/var/log/messages是系统发生故障时首先要查看的文件。
/var/log/messages是rsyslogd这个守护进程启动的,守护进程的配置文件在/etc/rsyslogd.conf,这个文件定义了日志的级别。
dmesg 这个命令显示系统的启动信息,在开机时启动,并存储在内存中。如果某个硬件有问题,可以在这里看到。
last用来查看登录linux的系统信息。
last命令实际读取的是/var/log/wtmp文件,但这个文件不能直接用cat,vi,vim,head,tail查看。
[root@cent02 tmp]# last|tail
root pts/1 192.168.30.1 Tue Oct 24 09:30 - 09:49 (00:18)
root pts/0 192.168.30.1 Mon Oct 23 23:37 - down (10:46)
root tty1 Mon Oct 23 22:07 - 10:23 (12:16)
reboot system boot 3.10.0-514.el7.x Mon Oct 23 22:06 - 10:23 (12:17)
root tty1 Tue Oct 24 05:36 - crash (-7:-29)
reboot system boot 3.10.0-514.el7.x Tue Oct 24 05:35 - 10:23 (04:48)
root tty1 Tue Oct 24 05:28 - crash (00:07)
reboot system boot 3.10.0-514.el7.x Tue Oct 24 05:27 - 10:23 (04:56)
/var/log/secure记录的也是和登录有关的信息,如ssh登录失败的信息在这里都可以记录到。
很多错误信息都不会反应在屏幕上,而是写在了日志里,所以使用常用软件时也应该有查看日志的习惯。如apache,myslq,php等时。
xargs和exec
xagrs可以把前面的输出作为后面的输入,所以可以把两步才能完成的任务一步就完成。他常常和find命令一起使用
find . -mtime +10 |xargs rm //删除最后修改时间大于10天的文件
//下面批量修改后缀名
[root@cent01 test]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[root@cent01 test]# ls *.txt|xargs -n1 -i{} mv {} {}_bak //xargs -n1 -i{}类似于for循环,-n1表示对对象逐个处理,-i{}表示用{}取代前面的对象,mv{} {}_bak相当于mv 1.txt 1.txt_bak
[root@cent01 test]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak 5.txt_bak
也可以和-exec配合使用。
find . -mtime +10 -exec rm -rf {} \; //这里的{}也表示用{}取代前面的对象
[root@cent01 test]# find ./*_bak -exec mv {} {}_bak \; //-exec以;为终止的标志。所以前面需要加上转义符\,同时转义符与前面要有一个空格。
[root@cent01 test]# ls
1.txt_bak_bak 2.txt_bak_bak 3.txt_bak_bak 4.txt_bak_bak 5.txt_bak_bak
screen
有时候一个任务要执行几个小时,或者几天,如果中途断网或者出现意外情况怎么办? 我们可以用两种办法来解决。
nohup
例如执行一个脚本
nohup sh /uer/local/sbin/sleep.sh & //虽然末尾直接加&也可以在后台运行,但是如果退出该终端,这个脚本也会退出。如果前面加上了nohup就不会有这个问题。他的作用就是在当前目录下生成一个nohup文件,放置进程意外中断,并把输出信息记录到nohup中。
screen
screen就是开启一个新的终端,利用这个工具可以确保任务不会因为退出某个终端而终止。
[root@cent01 test]# screen //输入命令screen会打开一个终端,ctrl+a然后ctrl+d会退出该终端。
[detached from 17799.pts-1.cent01]
[root@cent01 test]# screen
[detached from 17834.pts-1.cent01]
[root@cent01 test]# screen -ls //列出有哪些screen终端以及他们的编号
There are screens on:
17834.pts-1.cent01 (Detached)
17799.pts-1.cent01 (Detached)
14030.pts-1.cent01 (Detached)
13942.pts-1.cent01 (Detached)
4 Sockets in /var/run/screen/S-root.
[root@cent01 test]# screen -r 13942 //进入screen 13942
[root@cent01 test]# screen -S "abc" //使用-S为一个screen终端命名,避免弄不清哪个终端是什么作用。
[detached from 17928.abc]
[root@cent01 test]# screen -ls
There are screens on:
17928.abc (Detached)
17834.pts-1.cent01 (Detached)
17799.pts-1.cent01 (Detached)
14030.pts-1.cent01 (Detached)
13942.pts-1.cent01 (Detached)
5 Sockets in /var/run/screen/S-root.