作为一名Linux系统管理员,熟悉并熟练运用一些常用的命令是必不可少的,对设备即文件的Linux系统来说,Linux系统管理的命令是它正常运行的核心。笔者根据实际工作总结一些常用指令,附上一些相对常见的警报处理方法,以供共同学习。
【1】、查看命令(ls)
语法:
ls [option] [dirname]
常用参数:
-a,–all列出目录下的所有文件,包括以 .开头的隐含文件
-h,–human-readable以容易理解的格式列出文件大小 (例如 1K 234M 2G)
-i,–inode印出每个文件的 inode号
-l除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
[gz_fieldyang@ test ~]$ ls -ltr
total192
-rw-rw-r–1 gz_fieldyang gz_fieldyang 88 Mar 4 14:36 test.html
-rw-rw-r–1 gz_fieldyang gz_fieldyang 18 Mar 4 14:47 sed-n.sed
-rw-rw-r–1 gz_fieldyang gz_fieldyang 182 Mar 4 15:21 test.txt
-rw-rw-r–1 gz_fieldyang gz_fieldyang 50 Mar 4 16:06 example.txt
案例分析:
一般用于PortLinkStatus (Integer): down或者more than 1 CDR update process之类的警报,查看cdr
>login
>cd/opt/xxx/pcp
>ls-lt | more
>cd/opt/xxx/cdr
>ls-lt | more
【2】、查看进程存在与否 (ps)
语法:ps[option]
命令参数:
a 显示所有进程
-a显示同一终端下的所有程序
-A显示所有进程
c 显示进程的真实名称
-N反向选择
e 显示环境变量
f 显示程序间的关系
-H显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au显示较详细的资讯
-aux显示所有包含其他使用者的行程
-C<命令>列出指定命令的状况
–lines<行数>每页显示的行数
–width<字符数>每页显示的字符数
–help显示帮助信息
–version显示版本显示
[gz_fieldyang@test ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
(用户)(进程ID)(进程耗CPU比)(进程耗物理内存比)(耗虚拟内存量)(耗固定内存量)(运行终端机)(状态信息)(触发时间)(运作时间)(实际指令)
root 1 0.0 0.0 2064 592 ? Ss 2015 2:24 init [5]
root 2 0.0 0.0 0 0 ? S< 2015 8:33 [migration/0]
root 3 0.0 0.0 0 0 ? SN 2015 0:06 [ksoftirqd/0]
…
root 30641 2.0 0.0 9916 2812 ? Ss 10:41 0:00 sshd: gz_fieldyang [priv]
871 30644 0.0 0.0 10048 1672 ? S 10:41 0:00 sshd: gz_fieldyang@pts/2
871 30646 1.5 0.0 4528 1388 pts/2 Ss 10:41 0:00 -bash
871 30677 0.0 0.0 4248 936 pts/2 R+ 10:41 0:00 ps -aux
root 31137 0.0 0.0 0 0 ? S Apr10 0:04 [pdflush]
说明:
USER:该 process 使用者的账号
PID:该 process的号码
%CPU:该 process 使用掉的 CPU资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ:该 process使用掉的虚拟内存量 (Kbytes)
RSS:该 process占用的固定的内存量 (Kbytes)
TTY:该 process是在那个终端机上面运作,若与终端机无关,则显示 ?,
另外,tty1-tty6是本机上面的登入者程序,若为 pts/0等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
R:该程序目前正在运作,或者是可被运作
S:该程序目前正在睡眠当中 (可说是 idle状态),但可被某些讯号(signal)唤醒。
T:该程序目前正在侦测或者是停止了
Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie(疆尸)程序的状态
START:该 process 被触发启动的时间
TIME:该 process实际使用 CPU运作的时间
COMMAND:该程序的实际指令
案例分析:
配合grep查找特定进程,一般用于出现诸如Application process ‘…’ not running 或者disk full之类的警报
ps -ef |grep …
实例1:
[gz_fieldyang@test ~]$ ps -ef | grep MySQLd
root 7370 1 0 2011 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe –user=mysql–skip-slave-start
mysql 7427 7370 0 2011 ? 7-02:05:47 /usr/local/mysql/bin/mysqld
–basedir=/usr/local/mysql–datadir=/usr/local/mysql/data –user=mysql
–skip-slave-start–log-error=/usr/local/mysql/data/test.com.err
–pid-file=/usr/local/mysql/data/test.com.pid
836 20670 20606 0 15:26 pts/1 00:00:00 grep mysqld
实例2:
>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
drwxrwxrwx3950 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|grep 2quZ0443
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 4697 4702
[root@test ph]# ps -ef|grep YLWb0443
root 4220 1 74 17:13 pts/1 00:26:27/var/www /pdup /var/www/ YL/YLWb0443 /transcoder/iphone/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 -vfdsize=336:224:0,scale=0:0,expand=336:224……
root 21602 17542 0 17:48 pts/4 00:00:00 grep YLWb0443
【3】、查看日志文件是否运行,显示指定文件末尾内容,不指定文件时,作为输入信息进行处理 (tail)
语法:
tail[必要参数][选择参数][file]
命令参数:
-f循环读取
-q不显示处理信息
-v显示详细的处理信息
-c<数目>显示的字节数
-n<行数>显示行数
–pid=PID与-f合用,表示在进程ID,PID死掉之后结束.
-q, –quiet, –silent从不输出给出文件名的首部
-s, –sleep-interval=S与-f合用,表示在每次反复的间隔休眠S秒
一般用于出现诸如Application process ‘…’ not running或者(update.sh)’…‘ is not synced
或者 App_Procs port18506 ERROR之类的警报,或者配合grep查找特定状态信息
/var/www/…/…/log
tail-f xxx.log
实例1:(update.sh)’…‘ is not synced
[gz_fieldyang@test] cd /gz/util/HealthCheckScript/
[gz_fieldyang@test HealthCheckScript]$ tail -20 healthcheck_log.txt
2016-04-0815:19:03 (resume.sh) cg1 is synced gzBehavior: 0
2016-04-0815:19:04 (resume.sh) cg2 is not synced gzcBehavior: 0
2016-04-0815:19:05 (resume.sh) cg3 is synced gzBehavior: 0
2016-04-0815:19:06 (resume.sh) cg4 is synced gzBehavior: 0
2016-04-0815:19:06 (resume.sh) cg5 is synced gzBehavior: 0
…
实例2:切换到特定文件夹,查看日志
cd/home/…/log
tail-f portxxxxx.log
实例3:配合grep查找特定状态信息
[root@test upelogs]# tail -f upe-debug.log | grep status@S
[2016-03-2418:53:07.962][http-80-1] DEBUG – Reply with response <?xml version=’1.0′
……
<Result>id@….status@S|ove….></soap:Envelope>
【4】、启动进程(start,reatart)
一般用于出现诸如Application process ‘…’ not running或者 connection fail或者 request time out之类
重启步骤如下:
①
1).checkthe process if running
ps-ef|grep mysqld
2).if not running then restart
/etc/init.d/mysqldrestart
②
/sbin/servicentpd restart
/sbin/servicentpd status
③
login
>bash
>xxxstatus
>cd/var/xxxx/LOG
>tail-f xxxxx.log
>xxxx stop
>xxx status
>xxxx start
>xxx status
【5】、文件传输(ftp)
failed to FTP file to … Procedure
可能原因是磁盘将满或者vsFTPd进程未运行
实例1:磁盘将满
[fieldyang@test~]$ ftp 127.0.0.1
Connectedto 127.0.0.1.
220(vsFTPd 2.0.5)
530Please login with USER and PASS.
530Please login with USER and PASS.
KERBEROS_V4rejected as an authentication type
Name(127.0.0.1:fieldyang):
[fieldyang@test ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/map/vg00-lvol01
2.0G 683M 1.2G 37% /
/dev/map/vg00-lvol05
97G 18G 76G 19% /home
/dev/map/vg00-lvol04
4.9G 3.7G 927M 81% /var
/dev/map/vg00-lvol03
7.8G 4.5G 3.0G 61% /usr
/dev/map/vg00-lvol06
242G 85G 147G 37% /smc
/dev/sda1 99M 18M 77M 19% /boot
tmpfs 4.0G 0 4.0G 0% /dev/shm
实例2::vsFTPd进程是否运行
1).检测FTP服务是否开启
①查看进程是否存在ps -ef | grep ftp
[gz_fieldyang@test ~]$ ps -ef | grep ftp
nobody 3461 6064 0 Mar24 ? 00:00:00 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
gup 3477 3461 0 Mar24 ? 00:02:31 /usr/sbin/vsftpd/etc/vsftpd/vsftpd.conf
root 6064 1 0 2011 ? 00:08:36 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
…
若并未找到任何包含ftp关键字的进程信息,可判断服务未开启。
②.查询vsftpd服务是否存在service vsftpd status
vsftpd是最常见的FTP服务器,一般Linux系统都是通过vsftpd来搭建FTP服务环境。
[gz_fieldyang@test ~]$ /sbin/service vsftpd status
vsftpddead but subsys locked
2).开启FTP服务
/sbin/servicevsftpd start
3).查看状态
/sbin/servicevsftpd status
附:编辑vsftpd.conf简单配置实现匿名上传下载
vivsftpd.conf
anon_upload_enable=YES
anonymous_enable=YES
write_enable=YES
Anon_mkdir_write_enable=yes
【6】、检查linux服务器的文件系统的磁盘空间占用情况(df)
Df命令在运维中使用广泛,使用参数相对单一,大多数情况下都是用(df –kh)来查看磁盘占用情况,以便获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [option] [file]
参数:
必要参数:
-a全部文件系统列表
-h方便阅读方式显示
-i显示inode信息
-k区块为1024字节
-l只显示本地文件系统
–no-sync忽略 sync命令
-P输出格式为POSIX
–sync在取得磁盘信息前,先执行sync命令
-T文件系统类型
选择参数:
–block-size=<区块大小>指定区块大小
-t<文件系统类型>只显示选定文件系统的磁盘信息
-x<文件系统类型>不显示选定文件系统的磁盘信息
–help显示帮助信息
–version显示版本信息
实例:如:“/:” filesystem over 98% full(819MB free)
[gz_fieldyang@test ~]$ df -kh
Filesystem Size Used Avail Use% Mounted on
(文件系统) (容量)(已用)(可用)(已用占比)(挂载点)
/dev/mapper/vg00-lvol01
2.0G 807M 1.1G 43% /
/dev/mapper/vg00-lvol03
4.9G 3.9G 780M 84% /usr
/dev/mapper/vg00-lvol04
4.9G 2.7G 2.0G 58% /var
/dev/mapper/vg00-lvol05
15G 11G 3.2G 78% /home
/dev/mapper/vg00-lvol06
20G 14G 5.3G 73% /smc
/dev/sda1 99M 18M 76M 19% /boot
tmpfs 1014M 0 1014M 0% /dev/shm
[gz_fieldyang@test ~]$
【7】、建立用户帐号和创建用户的起始目录(useradd)
语法:
useradd [-d home] [-s shell] [-c comment] [-m [-ktemplate]] [-f inactive] [-eexpire ] [-p passwd] [-r]name
主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。
使用useradd命令所建立的账号,实际上是保存在/etc/passwd文本文件中。
实例:建立一个新用户账户,并设置ID:
[root@ test ~]#useradd Kin_ma-u 544
groupadd:将新组加入系统。
语法:
groupadd [-g gid] [-o]] [-r] [-f]groupname
3.主要参数
-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。
【8】、修改用户帐号(usermod)
语 法:
usermod [-LU][-c<备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
参 数:
-c<备注> 修改用户帐号的备注文字。
-d登入目录> 修改用户登入时的目录。
-e<有效期限> 修改帐号的有效期限。
-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
-g<群组> 修改用户所属的群组。
-G<群组> 修改用户所属的附加群组。
-l<帐号名称> 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s<shell> 修改用户登入后所使用的shell。
-u<uid> 修改用户ID。
-U 解除密码锁定。
groupmod(groupmodify)
功能说明:更改群组识别码或名称。
语 法:groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
补充说明:需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。
参 数:
-g <群组识别码> 设置欲使用的群组识别码。
-o 重复使用群组识别码。
-n <新群组名称> 设置欲使用的群组名称。
实例:修改已辞职管理员账户jack为新管理员账户Field
[root@ test ~]# usermod-l gz_fieldyang gz_jack
[root@ test ~]# usermod -d/home/gz_fieldyang gz_fieldyang
[root@ test ~]# groupmod -ngz_fieldyang gz_jack
[root@ test ~]# mv /home/gz_jack/home/gz_fieldyang
[root@ test ~]# passwd gz_fieldyang
示例:修改组名.
[root@ test ~]# groupadd linuxso
[root@ test ~]]# tail -1 /etc/group
linuxso:x:500:
[root@ test ~]# tail -1 /etc/group
linuxso:x:500:
[root@ test ~]# groupmod -n linuxlinuxso
[root@ test ~]# tail -1 /etc/group
linux:x:500:
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-04/130077p2.htm
【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 按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-exec:find命令对匹配的文件执行该参数所给出的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将发送指定的信号到相应进程以终止相应进程。如不指定型号则默认发送SIGTERM(15)终止指定进程。
如果仍旧无法终止该程序可用“-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
说明:
需要sendmail或postfix服务
如果单纯的发文件文件可以用
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:表示硬盘上交换分区的使用情况
系统的总物理内存:2075608Kb(2026M),
但系统当前真正可用的内存并不是第一行free 标记的 69188Kb,它仅代表未被分配的内存。
我们将 Mem各项数据标记为1,-/+ buffers/cache各项数据标志为2,做进一步分析:
total1: 表示物理内存总量。
used1: 表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free1: 未被分配的内存。
shared1: 共享内存,一般系统不会用到。
buffers1: 系统分配但未被使用的buffers 数量。
cached1: 系统分配但未被使用的cache 数量。
used2: 实际使用的buffers 与cache 总量,也是实际使用的内存总量。
free2: 未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
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内部,常见的容量有256KB或512KB L2 Cache。
Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。
buffer: 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-04/130077.htm