一、系统服务管理
【查看系统服务】
chkconfig --list | grep <service_name>
每个服务后面的0-6里面的on/off表示每个运行级别下该服务是否被开启
*这个运行级别就是之前说过的init 0-6,/etc/inittab中有详细的说明:
# runlevel 0 is System halt (Do not use this forinitdefault!)
# runlevel 1 is Single user mode
# runlevel 2 is Local multiuser without remote network (e.g. NFS)
# runlevel 3 is Full multiuser with network
# runlevel 4 is Notused
# runlevel 5 is Full multiuser with network and xdm
# runlevel 6 is System reboot (Do not use this for initdefault!)
【设置服务自启状态】
chkconfig [--level] [levels] <service_name> <on|off>
如果不使用--level选项,指定的服务将会在2,3,4,5运行级别上自启,如果带了这个选项,则只在指定的运行级别中自启:
chkconfig --level 35 xinetd on
chkconfig --list | grep xinetd
xinetd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
对于非独立服务,没有运行级别直说,因此直接使用
chkconfig <service_name> <on|off>
就可以了。所谓非独立服务,是指依赖其他服务的系统服务进程,比如:
xinetd based services:
chargen: off
chargen-udp: off
cups-lpd: off
cvs: off
daytime: off
daytime-udp: off
discard: off
discard-udp: off
echo: off
echo-udp: off
netstat: off
rsync: off
servers: off
services: off
swat: off
systat: off
time: off
time-udp: off
vnc: off
这些服务就是依赖于xinetd服务的非独立服务。
【添加删除系统服务】
某些应用程序,如mysql,oracle等,安装后需要将其对应服务添加到系统服务的自启列表中,方法如下:
1. 将应用的服务文件,比如叫mysqld,拷贝到系统服务目录/etc/init.d下
2. 增加执行权限:
chmod +x /etc/init.d/mysqld
3. 添加该服务到自启列表:
chkconfig -add mysqld
4. 删除自启服务:
chkconfig -del mysqld
然后再把之前拷到/etc/init.d/下的服务文件删掉就可以了。
【手动开启/关闭服务】
service service_name [start|stop|restart]
如果知道服务文件的位置,也可以直接使用
服务文件路径 [start|stop|restart]
二、进程管理
【ps命令】
ps [option]
【OPTION】
a:显示所有终端进程
x:显示所有终端进程,包括没有明确终端的进程
e:使用BSD格式按照如下格式显示所有终端进程
PID TTY TIME CMD
f:使用如下格式显示所有终端进程
UID PID PPID C STIME TTY TIME CMD
l:以长格式显示进程列表
u:显示所有用户的进程,格式如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
各字段含义:
USER:运行该进程的用户
PID:进程ID,唯一
%CPU:CPU占用率
%MEM:实际内存占用率
VSZ:进程占用虚拟内存大小(KB)
RSS:占用物理内存大小(KB)
TTY:登录终端名
STAT:目前进程状态:
D:不可终端的等待状态,通常是等待I/O设备的数据
R:处于运行队列中的进程
S:处于终端休眠状态的进程
T:已停止工作的进程、只因被跟踪所以存在
X:已经死亡的进程,这种状态通常不应出现
Z:僵死进程(有可能是已经退出、正在释放资源,需要反复确认)
<:高优先级进程
N:低优先级进程
s:会话的管理者
+:进程会使用前台的终端
l:多线程进程
一个进程有可能同时具备上述的多种状态,比如Ss+
【pstree命令】
以树状目录的形式显示进程及其子进程的关系
【top】
实时显示进程:
第一行最后三个数,表示过去1、5、10分钟内系统的负载均衡平均值;数值越高、负载越高;
第二行展示进程概况
第三行展示CPU的具体使用情况:us-用户进程的CPU占用率,sy-系统进程的CPU占用率,id-空闲CPU比例
第四、五行是物理内存和swap交换区的概况
列名说明:
PR:进程的优先级
linux有40个优先级,-20~19,-20最高,19最低。优先级越高、得到的CPU时间片越多。
NI:进程的优先级值
VIRT:使用虚拟内存的总量
RES:使用的物理内存总量
SHR:使用共享内存大小
进入top界面后,按H键可以查看帮助信息,按P键按CPU使用率由高到低排序,按M键按内存占用率排序。
【&,jobs,fg】
查看后台任务命令,在init 3模式下运行某些耗时较长的命令,会占用终端导致无法执行其他命令,这时可以在运行的命令最后加上&符号将其放在后台运行。
之后,使用jobs命令,可以查看其作业号和运行状态,最后使用
fg 作业号
将运行好的结果再次调用到前台展示
【结束进程命令kill】
正常终止进程
kill -15 pid
强制终止进程(包括其子进程)(快捷键ctrl+c)
kill -9 pid
挂起进程(快捷键ctrl+z)
kill -19 pid
重启进程
kill -18 pid
【指定进程优先级nice】
显示进程的默认优先级
nice
在开始执行某命令/脚本之前,指定其以某个优先级运行
nice -n <优先级序号> command|file_name
【改变进程优先级renice】
对于运行状态的进程,可以使用该命令改变其优先级:
renice -n <PID>
三、计划任务管理
【开启计划任务管理功能】
#将cron服务加入自启列表
chkconfig --level 35 cron
(有的系统中把cron命名为crond)
将atd服务加入自启列表
chkconfig atd on
#启动cron服务
service cron start
#启动atd服务
service atd start
【cron计划任务格式】
* * * * * command|shell_name
五个星号的含义及取值范围:
第一个:分钟,1~59
第二个:小时,0~24,
第三个:日期,1~31
第四个:月份,1~12
第五个:星期几,0~6(0是星期天)
后面跟要执行的命令或者脚本绝对路径。
其中,可以使用- * , # /等通配符
-:表示范围
*:表示每个单位时间
,:表示一个列表
#:注释行
/:分隔时间段
*一个计划任务后面可以执行多条命令或脚本,用;分割。
比如:
1. 每月1日凌晨4点运行/root/backup.sh
* 4 1 * * /root/backup.sh
2. 每周六日19点至24点,每隔15分钟在后台运行/root/backup1.sh和/root/backup2.sh
*/15 19-24 * * 6,0 /root/backup1.sh& >/dev/null; /root/backup1.sh&>/dev/null
【添加/管理计划任务】
crontab [option]
【OPTION】
u:指定要操作的系统用户
e:编辑计划任务(就是把上面的命令加到这里面、然后保存退出)
r:删除当前登录用户下的所有计划任务,如果配合u使用,则删除指定用户下的所有计划任务;如果要删除某一条,则使用e选项进入编辑模式一条一条删
l:查看已存在的计划任务列表
【使用at执行一次性计划任务】
at [option] [time command|file_name]
【OPTION】
f:指定一个文件作为任务脚本
m:完成任务后给用户发一个邮件
l:列出计划任务列表
d:删除指定的计划任务
【time】
1. 只指定HH:MM,比如19:00,默认为当天的这个时间执行;
2. HHam(或者pm) Jan|Feb…Day,比如8pm Oct15,表示10月15日晚上8点执行;
3. now +2 hour:从现在起两个小时后执行
4. 10:10am tomorrow:明天上午10点10分执行
使用该命令时,可以先指定执行时间,然后进入at文本编辑界面指定要执行的命令/脚本,编辑完成后使用ctrl+d保存退出(有<EOT>提示);也可以直接指定执行时间和要执行的命令/脚本。
【举例】
#添加一个5小时后执行的脚本
at now+5 hour -f /root/backup.sh
#查看待执行的任务列表
at -l
#删除一个已经存在的定时任务
#先用atq查看其任务号
atq(或at -l)
3 2015-12-2102:39 a root
atrm 3(或at -d 3)
*cron和at对应的计划任务,都被存放在/var/spool/下的cron和at文件夹。
*如果要拒绝某个用户执行at命令,可以在/etc/ at.deny文件中设置。
四、日志管理
【SUSE日志清单】
/var/log/boot.msg
系统启动时显示的屏幕信息。当无法登录系统时,按“CTRL+ALT+F10”切换到日志显示界面再通过KVM观察屏幕输出。
/var/log/boot.omsg
上一次启动日志。
/var/log/messages
系统日志。也可以通过执行dmesg命令查看内核输出缓冲区信息,即内核、驱动的日志输出,但是不包含日志记录时间信息。
/var/log/warn
warn级别以上的系统日志。
/var/log/wtmp
系统登录及重启信息,执行last命令读取。
/var/log/YaST2/y2log
YaST界面操作日志。
/var/log/xinetd.log
xinetd服务日志。
/var/log/dump/
系统Dump日志存放目录,包括Kdump工具收集的系统宕机的故障信息。
/var/log/atop(没找到)
Atop工具收集的系统资源使用情况日志,包括CPU、内存、系统进程和IO数据,常用于分析进程内存泄露、CPU耗尽、IO异常等故障。
【记录日志消息logger】
在编写脚本时,可以将相应的警告/报错信息使用该命令写入到message系统日志。
logger [option] message
【OPTION】
i:使用logger的PID作为消息的PID
p:使用指定的选择域
t:使用指定的进程名
比如:
logger -i -p local6.err -t test.sh "This is a test message."
执行后,在/var/log/message中会产生一条记录:
Dec 20 23:33:58 linux-6ojz test.sh[32293]:This is a test message.