您的位置:首页 > 运维架构 > Shell

《Linux命令、编辑器与Shell编程》读书笔记7-Linux系统管理

2015-12-20 23:48 471 查看

一、系统服务管理

【查看系统服务】

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】

对于运
4000
行状态的进程,可以使用该命令改变其优先级:

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux linux入门 suse shell