Linux进程、日志以及systemctl控制


本篇主要讲述:
1  进程管理
2  日志管理
3  systemctl控制
 
1、进程管理
 程序:静态没有执行的代码,占用磁盘空间
 进程:执行的代码放入内存中运行,占用内存、cpu
 PID:编号,标识进程
 父进程、子进程
1.1 查看进程树
pstree — Processes Tree
yum -y install psmisc
格式:pstree [选项] [PID或用户名]
常用命令选项
-a:显示完整的命令行
-p:列出对应PID编号
systemd:内核直接运行的第一个进程,PID永远为1
[root@svr7 ~]# pstree
[root@svr7 ~]# pstree lisi
bash───vim
[root@svr7 ~]# pstree -p lisi
bash(30712)───vim(30751)
[root@svr7 ~]# pstree -ap lisi
1.2 查看进程快照
ps (processes snapshot)
ps aux 操作 显示当前终端所有进程(a),当前用户在所有终端下的进程(x),以用户格式输出(u)     #列出正在运行的所有进程
ps -elf 操作 显示系统内所有进程(-e),以长格式输出(-l),信息,包括最完整的进程信息(-f)    #列出正在运行的所有进程
ps aux | grep ssh
ps -elf | grep tomcat | grep -v 'grep' | awk '{print $4}' | xargs kill -9
 
1.3 进程动态排名
top 交互式工具
1.3.1常用命令
格式: top [-d 刷新秒数]
top输出的结果保存在文本文件中
top -b -n1 >> top.log
top相关命令详解:
-b  :Batch-mode operation
            Starts top in Batch mode, which could be useful for sending output from top to other programs or to a file.  In  this mode,  top  will not accept input and runs until the iterations limit you've set with the `-n' command-line option or until killed.
- b:批处理模式操作
以批处理模式启动top,这对于将输出从top发送到其他程序或文件很有用。在此模式下,top将不接受输入,直到您使用' -n'命令行选项设置了迭代限制,或者直到终止为止。
-d  :Delay-time interval as:  -d ss.t (secs.tenths)
            Specifies  the  delay  between  screen updates, and overrides the corresponding value in one's personal configuration file or the startup default.  Later this can be changed with the `d' or `s' interactive commands.
-d:延迟时间间隔为:-d ss.t(秒)
指定屏幕更新之间的延迟,并覆盖个人配置文件中的相应值或启动默认值。稍后可以用' d'或' s'交互命令来更改。
 
1.3.2 top命令输入内容详解
[root@localhost ~]# top
top - 07:41:11 up 19 min,  2 users,  load average: 0.01, 0.02, 0.05
Tasks: 284 total,   2 running, 282 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  1.0 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1878184 total,  1486892 free,   171196 used,   220096 buff/cache
KiB Swap:   524284 total,   524284 free,        0 used.  1574156 avail Mem
 
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 
内容说明:
第一行:
当前时间、最后一次开机后的运行时间、登录系统的用户数
load average: 0.03, 0.04, 0.05:1分钟,5分钟,15分钟系统的负载的情况
第二行 任务或进程数量
total总的、running运行中的、sleeping睡眠中的、stopped停止的、zombie僵尸进程
第三行 根据自上次刷新以来的间隔显示CPU状态百分比
man top对应的说明
us, user    : time running un-niced user processes
sy, system  : time running kernel processes
ni, nice    : time running niced user processes
id, idle    : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
us:用户态使用的cpu时间比(cpu消耗在用户空间的时候的百分比)
sy:系统态使用的cpu时间比 (cpu消耗在系统空间的时候的百分比)
ni:用做nice加权的进程分配的用户态cpu时间比
id:空闲的cpu时间比
wa:cpu等待磁盘写入完成时间
hi:硬中断消耗时间
si:软中断消耗时间
st:虚拟机偷取时间
这些百分比加起来为100%
第4行 内存信息
第5行 swap交换分区信息
PID:进程ID,进程的唯一标识符
USER:进程所有者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有以下不同的值:
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
按大写的P   cpu排序
按大写的M   内存排序
T:根据进程消耗的TIME降序排列
k:杀死指定进程
q:退出top
 
1.3.3 系统负载如何计算得来
系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程树。如果一个进程满足以下条件则其就会位于运行队列中:
  - 它没有在等待I/O操作的结果
  - 它没有主动进入等待状态(也就是没有调用’wait’)
  - 没有被停止(例如:等待终止)
在Linux中,进程分为三种状态,一种是阻塞的进程blocked process,一种是可运行的进程runnable process,另外就是正在运行的进程running process。当进程阻塞时,进程会等待I/O设备的数据或者系统调用。
进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数
单核系统这个值小于1的时候说明正常,等于1的时候说明正好在承受范围之内,等于2说明是当前的2倍
多核系统,这个值除以cpu的数量;正常这个值在0.7以内
 
1.4 检索进程
pgrep — Process Grep
用途:pgrep [选项]... 查询条件
常用命令选项
-l:输出进程名,而不仅仅是 PID
-U:检索指定用户的进程
-t:检索指定终端的进程
-x:精确匹配完整的进程名
[root@svr7 ~]# pgrep log
[root@svr7 ~]# pgrep -l log 
[root@svr7 ~]# pgrep -U lisi
[root@svr7 ~]# pgrep -lU lisi
[root@svr7 ~]# pstree -ap lisi
[root@svr7 ~]# who                    #查看正在登陆的用户信息
[root@svr7 ~]# pgrep -lU lisi
[root@svr7 ~]# pgrep -lU lisi -t pts/2
1.5  进程的调度(前后台)
放入后台启动
– 在命令行末尾添加“&”符号,正在运行的状态放入后台
– Ctrl + z 组合键,暂停的状态放入后台
[root@svr7 ~]# sleep 800 &       #将前台的进程,正在运行放入后台    
[root@svr7 ~]# jobs                   #查看后台进程
[root@svr7 ~]# jobs -l               #查看后台进程,并且加上PID
[root@svr7 ~]# sleep 700
^Z                                              #按Ctrl+z可以暂停放入后台
[2]+  已停止               sleep 700
[root@svr7 ~]# jobs -l
[root@svr7 ~]# bg 2                 #将后台进程编号为2的,继续在后台运行
[2]+ sleep 700 &
[root@svr7 ~]# jobs -l
[root@svr7 ~]# fg 1                 #将后台的进程恢复到前台
sleep 800
^C                                            #按Ctrl+c结束进程
[root@svr7 ~]# fg 2
sleep 700
^C                                            #按Ctrl+c结束进程
 
1.6  杀死进程
kill 参数
kill 数字等级
kill  [-9]  PID...
killall  [-9]  进程名...
pkill 查找条件
pkill -9 -U lisi       #强制踢出用户
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# sleep  900 &
[root@svr7 ~]# jobs -l
[root@svr7 ~]# kill 1928
[root@svr7 ~]# jobs -l
[root@svr7 ~]# killall  sleep
[root@svr7 ~]# jobs -l
 
2 、日志管理
2.1 日志概述
系统和程序的“日记本”
– 记录系统、程序运行中发生的各种事件
– 通过查看日志,了解及排除故障
– 信息安全控制的“依据
2.2 常见的日志文件
  /var/log/messages       记录内核消息、各种服务的公共消息
  /var/log/dmesg            记录系统启动过程的各种消息
  /var/log/cron                记录与cron计划任务相关的消息
  /var/log/maillog           记录邮件收发相关的消息
  /var/log/secure             记录与访问限制相关的安全消息
tailf    实时跟踪 新增日值消息
2.3 用户日志
由登录程序负责记录/管理
日志消息采用二进制格式
记录登录用户的时间,来源,执行的命令等信息
/var/log/lastlog:记录最近的用户登录事件
/var/log/wtmp:记录成功的用户登录/注销事件
/var/log/btmp:记录失败的用户登录事件
/var/run/utmp:记录当前登录的每个用户的相关信息
2.4 日志分析
users、who、w 命令
查看已登录的用户信息,详细度不同
last、lastb 命令
查看最近登录成功/失败的用户信息
[root@svr7 ~]#  users
[root@svr7 ~]#  who
[root@svr7 ~]#  w
[root@svr7 ~]#  last -2     #最近两次登录成功
[root@svr7 ~]#  lastb -2   #最近两次登录失败
2.5 日志消息的优先级
Linux内核定义的事件紧急程度
 – 分为 0~7 共8种优先级别
 – 其数值越小,表示对应事件越紧急/重要
 0  EMERG(紧急) 会导致主机系统不可用的情况
 1  ALERT(警告) 必须马上采取措施解决的问题
 2  CRIT(严重) 比较严重的情况
 3  ERR(错误) 运行出现错误
 4  WARNING(提醒) 可能会影响系统功能的事件
 5  NOTICE(注意) 不会影响系统但值得注意
 6  INFO(信息) 一般信息
 7  DEBUG(调试) 程序或系统调试信息等
2.6 使用journalctl工具
• 提取由 systemd-journal 服务搜集的日志
• 常见用法
– journalctl | grep 关键词
– journalctl -u 服务名 [-p 优先级]
– journalctl -n 消息条数
– journalctl --since="yyyy-mm-dd HH:MM:SS" --
until="yyyy-mm-dd HH:MM:SS"
[root@svr7 ~]# yum -y install httpd
[root@svr7 ~]# systemctl restart httpd
[root@svr7 ~]# journalctl -u httpd -p 6
3 、systemctl控制
3.1 systemd介绍
一个更高效的系统&服务管理器
开机服务并行启动,各系统服务间的精确依赖
服务目录:/lib/systemd/system/
控制服务状态
systemctl start|stop|restart 服务名...
查看服务的运行状态
systemctl status|is-active  服务名...
[root@svr7 ~]# systemctl enable httpd         #设置随机自起
[root@svr7 ~]# systemctl is-enabled httpd   #查看是否随机自起
[root@svr7 ~]# systemctl disable httpd        #设置随机不自起
[root@svr7 ~]# systemctl is-enabled httpd
graphical.target   图形模式  
multi-user.target  文本模式
当前切换图形模式  
[root@svr7 ~]# systemctl isolate graphical.target
每次开机都进入的模式,默认模式的修改
[root@svr7 ~]# systemctl get-default      #查看默认级别
[root@svr7 ~]# systemctl set-default graphical.target    #设置默认级别
[root@svr7 ~]# systemctl get-default
[root@svr7 ~]# reboot
systemcli -t service            #列出活动的系统服务
systemcli -t service  --all   #列出所有系统服务


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM