企业Linux系统管理员常用命令大全实例解析(2)



作为一名企业Linux系统管理员,熟悉并熟练运用一些常用的命令是必不可少的,对设备即文件的Linux系统来说,Linux系统管理的命令是它正常运行的核心。笔者根据实际工作总结一些常用指令,附上一些相对常见的警报处理方法,以供共同学习。

9】、压缩(gzip)和删除(rm)

1)压缩(gzip)

gzipfilename              压缩一个文件,压缩后原文件会被删除

gunzipfilename.gz          解压后.gz的文件会被删除

gzip-d filename.gz         解压缩

gzip -c filename>> filename.gz  实现压缩原文件同时保留原文件 

gzip -n filename            自定义压缩级别(级别<1-9>越高压缩比越高,但是速度越慢,默认是6

zcatfilename.gz             不解压缩的情况下查看压缩文件的内容

2)归档(tar)

tar -zcvf filename.tar.gz  file1 file2 file3 归档并压缩这三个文件   

tar -zxvf filename.tar.gz     解压缩并解档

tar -jcvf filename.tar.bz2 file1 file2 file3 解压缩并解档

tar -jxvf filename.tar.bz2    解压缩并解档

3)删除(rm)

语法:

rm[option] file…

命令参数:

   -f, --force    忽略不存在的文件,从不给出提示

   -i, --interactive 进行交互式删除

   -r, -R, --recursive   指示rm将参数中列出的全部目录和子目录均递归地删除

   -v, --verbose    详细显示进行的步骤

      --help     显示此帮助信息并退出

      --version 输出版本信息并退出

 

用法:处理磁盘将满问题

案例分析:"/xxx/xxxx:"filesystem over xx% full (xxxMB free)

 

实例1:以/var为例

1).打包旧文件

> cd /var/log/httpd

> ls –l h 

-rw-r--r--1 root root 16M Mar 10 00:00access_log.3

-rw-r--r--1 root root 16M Mar  3 00:00 access_log.4 ---oldest log

-rw-r--r--1 root root 14M Mar 10 00:00ssl_access_log.3

-rw-r--r--1 root root 14M Mar  3 00:00 ssl_access_log.4 ---oldest log

>gzip access_log.4 #打包旧文件

2).磁盘将满问题依然存在,删除旧压缩文件

>rm access_log.4 and access_log.4.gz

3).查看磁盘情况

>df –kh

 

实例2:以/usr为例

Zipthe oldest log , if disk full still problem than delete the oldest log inhousekeep

1). 

> cd /usr/local/disc/router/log  

> ls –l h 

-rw-r--r--   1 disc    users        9.2M Mar 24 23:59router.log.2016-03-24.gz   <-oldestlog

-rw-r--r--   1 disc    users        8.6M Mar 25 23:59router.log.2016-03-25.gz

-rw-r--r--   1 disc    users        9.1M Mar 26 23:59router.log.2016-03-26.gz

-rw-r--r--   1 disc    users        9.9M Mar 27 23:59router.log.2016-03-27.gz

-rw-r--r--   1 disc    users        143M Mar 28 23:59router.log.2016-03-28    <-oldest logwhich not zip yet

-rw-r--r--   1 disc    users        140M Mar 29 23:59router.log.2016-03-29

-rw-r--r--   1 disc    users        163M Mar 30 23:59router.log.2016-03-30

-rw-r--r--   1 disc    users        5.9M Mar 23 23:59router-smtp.debug.log.2016-03-23.gz  <-oldest log

-rw-r--r--   1 disc    users        5.9M Mar 24 23:59router-smtp.debug.log.2016-03-24.gz

-rw-r--r--   1 disc    users        5.8M Mar 25 23:59router-smtp.debug.log.2016-03-25.gz

-rw-r--r--   1 disc    users        6.4M Mar 26 23:59router-smtp.debug.log.2016-03-26.gz

-rw-r--r--   1 disc    users        6.4M Mar 27 23:59router-smtp.debug.log.2016-03-27.gz

-rw-r--r--   1 disc    users         79M Mar 28 23:59router-smtp.debug.log.2016-03-28      <-oldest log which not zip yet

-rw-r--r--   1 disc    users         76M Mar 29 23:59router-smtp.debug.log.2016-03-29

-rw-r--r--   1 disc    users         78M Mar 30 23:59router-smtp.debug.log.2016-03-30                       

>gzip router.log.2016-03-28

>gzip router-smtp.debug.log.2016-03-28      

2).磁盘将满问题依然存在,删除旧压缩文件

>rm router.log.2016-03-24.gz orrouter-smtp.debug.log.2016-03-23.gz

3). df –kh

 

 

10】、查找指定时间内修改过的文件(find)

部分常用参数说明:

-name  filename  查找名为filename的文件

-mtime  -n +n   按文件更改时间来查找文件,-nn天以内,+nn天以前

-execfind命令对匹配的文件执行该参数所给出的shell命令相应命令的形式为'command' { } \;,注意{ }\;之间的空格

 

用法:一般用于处理磁盘将满问题

案例分析:"/xxx/xxxx:"filesystem over xx% full (xxxMB free)

实例1:查找超过特定时间的文件并予以删除

1).查看磁盘占用情况

> df -h

2).查找.csv.gz结尾且超过六十天的文件并予以删除

>cd /opt/smartone/backup/exception

>find ./ -name "*.csv.gz" -mtime +60 -exec ls -l '{}'';'

>find ./ -name "*.csv.gz" -mtime +60 -exec rm '{}' ';'

3).再次查看磁盘状况

> df -h   

实例2:查找.pcap结尾且超过7天的文件并予以删除           

[root@testncap]# find ./ -name "*.pcap" -mtime +7 -exec rm '{}'';'

[root@test ]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/map/VolGroup00-LogVol00

                     3.6T  4.7G 3.4T  1% /

/dev/sda1             99M   41M   54M 44% /boot

tmpfs                5.9G     0 5.9G  0% /dev/shm

/dev/mapper/VolGroup01-lvol0

                      48T   46T 2.3T 96% /ncap_data

                                      

实例3:修改脚本参数                                  

1).当前值为60

>vi /usr/local/MeX/james/apps/james/logs/housekeep.ksh

       cd /usr/local/james/logs

   find ./ -name "pop3server*.log"-mtime +3 | awk '{printf "gzip "$1"\n"}' | sh

   find ./ -name "smtpserver*.log"-mtime +3 | awk '{printf "gzip "$1"\n"}' | sh

   find ./ -name "smtpserver*"-mtime +60 | awk '{printf "rm -f "$1"\n"}' | sh

   find ./ -name "pop3server*"-mtime +60 | awk '{printf "rm -f "$1"\n"}' | sh

2).修改当前值为59 

>Cat /usr/local/james/logs/housekeep.ksh (example)

       cd /usr/local/james/logs

   find ./ -name "pop3server*.log"-mtime +3 | awk '{printf "gzip "$1"\n"}' | sh

   find ./ -name "smtpserver*.log"-mtime +3 | awk '{printf "gzip "$1"\n"}' | sh

   find ./ -name"smtpserver*" -mtime +59 | awk '{printf "rm -f"$1"\n"}' | sh

   find ./ -name"pop3server*" -mtime +59 | awk '{printf "rm -f"$1"\n"}' | sh

3).  运行脚本

>/usr/local/james/logs/housekeep.ksh

4).查看    

>df –kh  

 

 

11】、系统定时任务的执行(crontab

一般用在修改某些固定执行任务或重新建立某些定时任务

修改某些固定执行任务

基本格式:

*  *  *  *  *  command

     命令

 

实例1.修改固定参数,即编辑/etc/crontab文件(系统级别)    

[root@test~]# vi /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=""

HOME=/

 

#run-parts

01* * * * root run-parts /etc/cron.hourly

024 * * * root run-parts /etc/cron.daily

224 * * 0 root run-parts /etc/cron.weekly

424 1 * * root run-parts /etc/cron.monthly

 

实例2)crontab -e (用户级别)

使用命令crontab -e然后直接编辑定时脚本

这样执行以后,属于用户自定义的,会被写到/var/spool/cron目录下,生成一个和用户名一致的文件

一般情况下,系统管理员常用来修改某些日志产生的频率,追踪一些服务的报告

或添加一些定时执行的任务,免去手动执行的繁琐如超过多长时间的日志予以删除等等

[root@test ~]# crontab -e     

##########################DeleteAndroid data 10 days ago ################################

#300 * * * /bin/bash /home/sherman/mysqldatadelete.sh >>/home/sherman/mysqldatadelete.log 2>&1

##########################Proxy Monitor ################################

#150 * * * /bin/bash /home/proxy/source/scpfiles.sh >/home/proxy/logs.txt2>&1

05,20,35,50*/1 * * * /bin/sh /home/proxy/source/savexmldata.sh > /home/proxy/logs.txt2>&1

...

编辑加入相应的定时任务,

wq

 

 

12】、进程占用内存或资源(kill)

命令格式:

kill[option][PID]

说明:

一般情况下,先使用ps命令或者jobs命令查看特定进程号

kill PID将发送指定的信号到相应进程以终止相应进程如不指定型号则默认发送SIGTERM15)终止指定进程

如果仍旧无法终止该程序可用“-KILL”参数,其发送的信号为SIGKILL(9),将强制结束进程

注意root用户将影响用户的进程,非root用户只能影响自己的进程

命令参数:

-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称

-a 当处理当前进程时,不限制命令名和进程号的对应关系

-p 指定kill命令只打印相关进程的进程号,而不发送任何信号

-s 指定发送信号

-u 指定用户

常用的信号:

HUP    1   终端断线

INT    2   中断(同Ctrl + C

QUIT   3    退出(同Ctrl + \

TERM  15    终止

KILL   9    强制终止

CONT  18    继续(与STOP相反,fg/bg命令)

STOP  19   暂停(同 Ctrl+ Z

 

案例分析:一般用于disk full 之类的情况,

此时系统中某进程占用大量内存产生大量日志进而引发磁盘占满等一系列问题

步骤:

1.Check the disk space

> df-h

2.Find the process vid with large size

> cd/xx/xxx/

> ls-ltr|tail

3.Kill the problem process

    > ps -ef|grep [vid]

    > kill -9 [process ID]

4.Delete the problem log

> cd/xx/xxx/

> rm[vid]

5.Check the disk space again

> df-h

 

实例分析:

>1.查看磁盘情况

[root@test ~]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg00-lvol01

                      20G   20G    0 100% /

/dev/mapper/vg00-lvol04

                     9.7G  1.7G 7.6G 19% /var

/dev/mapper/vg00-lvol06

                      20G  5.2G  14G 29% /var/www/dev/mapper/vg00-lvol05

                      20G   10G 8.4G 55% /home

/dev/mapper/vg00-lvol07

                      20G 912M  18G   5% /housekeep

/dev/mapper/vg00-lvol03

                     9.7G  5.7G 3.6G 62% /usr

/dev/cciss/c0d0p1     99M  12M   82M 13% /boot

tmpfs                 12G     0  12G  0% /dev/shm

 

>2.切换至警报路径寻找大文件进程号

[root@test ~]# cd /trans/ph/

[root@test ph]# ls -ltr|tail

....

-rw-r--r--   1 root root 9562558464 Mar  7 17:48 YLWb0443

drwxrwxrwx 3950 root root    184320 Mar 7 17:48 mov

-rw-r--r--   1 root root 9322479616 Mar  7 17:48 2quZ0443

 

[root@test ph]# ps -ef|grep2quZ0443

root     4697    1 74 17:13 pts/1    00:25:40 .....

root     4702 4697 21 17:13 pts/1    00:07:25 .....

root    19935 17542  0 17:48 pts/4    00:00:00 grep 2quZ0443

 

>3.杀死进程

[root@test ph]# kill -9 46974702

[root@test ph]# ps -ef|grepYLWb0443

root     4220    1 74 17:13 pts/1   00:26:27/var/www /pdup /var/www/ YL/YLWb0443 /transcoder /mov/YL/YLWb0443.mov

root     4225 4220 21 17:13 pts/1    00:07:41 /var/www/ /ipmplayer -quiet-endpos +3600 -cache-min 0 -cache-seek-min 90 -vf dsize=336:224:0,scale=0:0,expand=336:224……

root    21602 17542 0 17:48 pts/4    00:00:00 grep YLWb0443

[root@test ph]# kill -9 4220 4225

[root@test ph]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg00-lvol01

                      20G  20G     0 100% /

/dev/mapper/vg00-lvol04

                     9.7G  1.7G 7.6G 19% /var

/dev/mapper/vg00-lvol06

                      20G  5.2G  14G 29% /var/www/smartone

/dev/mapper/vg00-lvol05

                      20G   10G 8.4G 55% /home

/dev/mapper/vg00-lvol07

                      20G  912M  18G  5% /housekeep

/dev/mapper/vg00-lvol03

                     9.7G  5.7G 3.6G 62% /usr

/dev/cciss/c0d0p1     99M  12M   82M 13% /boot

tmpfs                 12G     0  12G  0% /dev/shm

>4.删除文件

[root@test ph]# rm YLWb0443 2quZ0443

rm:remove regular file `YLWb0443'? y

y

rm:remove regular file `2quZ0443'? y

[root@test ph]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg00-lvol01

                      20G 1.8G   17G 10% /

/dev/mapper/vg00-lvol04

                     9.7G  1.7G 7.6G 19% /var

 

13】、邮件服务(mail)

使用mail发邮件时,必须先将sendmail服务启动

mail –s “邮件主题”–c”抄送地址”–b “密送地址”-- -f发送人邮件地址 –F发件人姓名<要发送的邮件内容

常见参数:

i忽略 tty的中断讯号。(interrupt)

I强迫设成互动模式。(Interactive)

v列印出讯息,例如送信的地点、状态等等。(verbose)

n不读入mail.rc设定档。

s邮件标题。

c cc抄送邮件地址。

b bcc密送邮件地址。

 

1)、三种常用格式发信

mail-s test field_yang@xxx.xx.cn

把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束

echo“mail content”|mail -s test field_yang@xxx.xx.cn

使用管道命令发送邮件信息

mail-s test field_yang@xxx.xx.cn < file #

file的内容为邮件内容发信

2)、指定特定的发送人:

$ mail -s"just a test"收信人邮箱地址<要发送的邮件内容文件-- -f发送人邮件地址-F发件人姓名

信件内容将发送收信人邮箱,显示的发送人为发送人姓名<发送人邮件地址>,显示的内容为发送的邮件内容...

3)、包含命令执行结果的MAIL发送:

echo -e`ls /tmp`|mail -s "test" fff@aaa.com < /tmp/dd.txt -- -fcc@aaa.com -F cc

说明:

需要sendmailpostfix服务

如果单纯的发文件文件可以用

catxxxx.txt |mail -s "主旨"abc@xxx.com fff@xxx.com

4)、说明

如果需要发送附件需要安装uuencode来编码 (yum install sharutils)

单独发附件,这样xxxx@xxx.com会收到一个data.txt的附件

uuencode/tmp/data_process.log data.txt |mailxxx@xxx.com

如果需要正文和附件一起发:

uuencode/tmp/data_process.log data.txt >/tmp/data_temp.txt

 

案例分析:公司内部特定时间的邮件服务器测试。

步骤:

>su -

>date> date.log

>mail-s "hello" testing@gmail.com < date.log

>sleep60

>greptesting@gmail.com /var/log/maillog | grep google.com

 

>echo`date` | mail -s "hello" testingsmc@gmail.com

>sleep60

>greptesting@gmail.com /var/log/maillog | grep google.com

 

实例:邮件检测

[gz_fieldyang@test ~]$ su -

Password:

[root@test ~]# echo `date` + "This is a test mail,Pleaseignore."| mail -s "hello" Field_Yang@gmail.com

[root@test ~]# sleep 30

[root@test ~]# grep Field_Yang@gmail.com /var/log/maillog | grepField_Yang

Feb14 11:53:49 gimei-test sendmail[25264]: u1E3rnV6025264: to=Field_Yang@gmail.com, ctladdr=root (0/0), delay=00:00:00, x)

Feb14 11:53:49 gimei-test sendmail[25267]: u1E3rn2A025265:to=<Field_Yang@gmail.com>, ctladdr=<root@test-v)

...

Feb15 16:35:04 gimei-test sendmail[15040]: u1E3rnV6025264: to=Field_Yang@gmail.com, ctladdr=root (0/0), delay=00:00:00, x)

Feb15 16:35:04 gimei-test sendmail[15043]: u1E3rn2A025265:to=<Field_Yang@gmail.com>, ctladdr=<root@test-v)

[root@test ~]#

 

 

14】、查看系统内存使用情况(free)

分析;free命令相对于top提供了更简洁的查看系统内存的使用情况方法。

            total       used       free    shared   buffers     cached

Mem:      2075608    2006420     69188         0      58580   1105924

-/+buffers/cache:    841916    1233692

Swap:     2097144        552   2096592

[gz_fieldyang@test~]$ free -m

            total       used       free    shared   buffers     cached

Mem:         2026       1959         67         0         57       1079

-/+buffers/cache:       822       1204

Swap:        2047         0      2047

[gz_fieldyang@test~]$

 

1)、相关说明:  

Mem:表示物理内存统计

-/+ buffers/cached:表示物理内存的缓存统计

Swap:表示硬盘上交换分区的使用情况

       系统的总物理内存:2075608Kb2026M),

       但系统当前真正可用的内存并不是第一行free标记的 69188Kb,它仅代表未被分配的内存。

 

我们将 Mem各项数据标记为1-/+ buffers/cache各项数据标志为2,做进一步分析:

total1   表示物理内存总量。

used1    表示总计分配给缓存(包含bufferscache)使用的数量,但其中可能部分缓存并未实际使用。

free1    未被分配的内存。

shared1  共享内存,一般系统不会用到。

buffers1 系统分配但未被使用的buffers数量。

cached1  系统分配但未被使用的cache数量。

used2    实际使用的bufferscache总量,也是实际使用的内存总量。

free2    未被使用的bufferscache和未被分配的内存之和,这就是系统当前实际可用内存。

2)、各参数间等式:

total1 =used1 + free1

total1 =used2 + free2

used1  = buffers1 + cached1 + used2

free2  = buffers1 + cached1 + free1

3)、cache buffer的区别:

Cache高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。

由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache)L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB512KB L2 Cache

Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

buffer:作为buffer cache的内存,是块设备的读写缓冲区

cache:作为page cache的内存,文件系统的cache

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值