linux 进程管理

linux shell script


执行脚本:
sh脚本需要具有rx权限,那么可以选择如下方式执行
1:绝对路径;/home/zhao/sh01.sh
2:相对路径,进入/home/zhao目录, ./sh01.sh
3:利用PATH变量执行,将sh01.sh脚本放入PATH对应的目录之下
以bash程序来执行bs01.sh
bash sh01.sh  或者 sh sh01.sh


------
linux 进程管理
1:查看进程
2:系统资源查看
3:系统定时任务
4:工作管理
——————————
查看进程 ps |pstree
ps aux 或者 ps -le 
查看系统中所有进程
aux 的输出解释:
user:用户名
Pid:进程id
cpu:cpu使用百分比,占用越高,进程越耗费资源
mem:内存百分比,占用越高,进程越耗费资源
VSZ:该进程占用虚拟内存的大小,单位kb;
RSS:该进程占用世纪内存的大小,单位kb;
TTY:该进程是在哪一个终端下运行的,tty1-7代表本地终端,pts/0-255 虚拟终端;
STAT:进程状态,R:运行,S:睡眠,T:停止,s:包含子进程,+:位于后台;D:不可被唤醒的睡眠状态,通常这只程序可能在等该io的情况;Z(zombie):僵尸状态已经被终止,但无法被移除至内存。
PRI/NI:priority/Nice的缩写,代表此程序配cpu所执行的优先级,数值越小,代表程序越快被cpu执行。
START:进程启动时间
TIME:进程占用cpu的运算时间,占用时间也是一个评估进程是否异常的标准;
Commad:产生此进程的命令;
------
cache 缓存 加速读取
buffer 缓冲 加速写入硬盘


------
pstree 
选项和参数:
-A:各程序树之间以ascii字符连接
-U:各程序树之间以万国码的字符来连接
-p:并同时列出每个process的pid
-u:同时列出每个process的所属账号


----
程序管理
程序之间是可以相互控制的,那么程序如何互相管理呢,其实是透过给予该程序一个讯号signal去告知该程序如何去做。


kill -l 可以查看主要的讯号代号,名称以及内容,常用 
1 : 启动被终止的程序,可以让该pid重新读区自己的配置文件,类似重启
9 : 代表强制中断一个程序的进行,如果该程序进行到一半,那么尚未完成的部分可能会有 残留 产生,例如vim 产生的 .filename.swp 文件保留下来;
15: 以正常的结束程序来终止该程序。


kill -signal PID 
----
killall -signal 指令名称
其中 加入 -i 选项,interactive 交互式。询问是否操作某pid
------
程序的执行顺序
linux 给予程序一个 所谓的 优先执行序 priority PRI,这个PRI的值越小,表示越优先。不过PRI的值是由核心动态调整的,用户无法直接调整PRI的数值。
由于PRI是核心动态调整,用户无法干涉,那么我们若要调整优先执行顺序,可以透过Nice值。PRI与NI的相关性如下:
PRI = PRI + NI
注意:若原本的PRI=50,并不是我们赋予NI=5,那么PRI=55,因为PRI是系统动态决定,虽然nice值可以影响PRI,不过最终的PRI仍是药经过系统分析才可以决定;
另外:
nice的值可以的调整范围 -20 ~ 19
root可以调整自己或者他人程序的Nice值;
一般用户仅可以调整自己程序的Nice值,且范围是0-19


--------
调整 程序nice值的方式:
1:一开始执行程序就立刻给予指定nice值
nice -n 数字 cmd
-n 后面接 -20~ 19的数字


2:renice [数字] PID
----
系统资源查看
除了如上的top指令以外,还有一些其它指令可以参考哦;
1:free 观察内存使用情况
free [-b|-k|-m|-g][-t]
选项和参数:
-b :直接输入free ,显示的单位是kb,我们可以使用 b(bytes),m(Mbytes)k,g等来显示单位
-t:在输出的结果,显示物理内存和swap总量
2:uname [-asrmpi]
-a:所有系统相关的信息
-s:系统核心名称
-r:核心的版本
-m:本系统的硬件名称,例如i686
-p:cpu的类型
-i:硬件的平台


3:uptime 观察系统启动时间和 工作负载
显示top画面的最上面一行信息


4:netstat 追踪网络 或 插槽文件
其实这个指令比较常用在网络监控方面,netstat的输出分为2部分,分别是网络与系统程序相关性部分
netstat  -[atunlp]
a:将目前系统上所有的联机,监控,socket数据都列出来
t:列出tcp网络封包的数据
u:udp网络封包
n::以端口号来显示 服务名称
l:列出目前正在网络监听的服务
p:列出该网络服务的程序pid


dmesg 分析核心产生的讯息


系统在开机的时候,核心回去侦测系统的硬件,所有核心侦测的讯息都会被记录到内存中某一个保护区段,一般以 [| more]管道符来是画面暂停


vmstat 侦测系统资源的变化
vmstat 可以侦测 cpu 内存 磁盘io状态等。
vmstat
-a cpu 内存等信息
-fs 内存信息
-S 单位 设定显示数据的单位
-d 磁盘相关



——————————————


fuser: 找出正在使用该文件的程序
若想知道程序启动过程中开启了多少文件,那么可以利用fuser来查看。
fuser [-umv][-k[i] [-signal]] file/dir
-u:除了程序的pid之外,同时列出该程序的owner;
-m:后面接的那个文档名 会主动的上提到该文件系统的最顶层,对nmount不成功很有效;
-v:列出每个文件和程序还有指令的完整相关性
-k:找出使用该文件/目录的pid,并试图以sigkill这个讯号给该pid
-i:必须和-k配合,在删除pid之前会询问使用者
-signal: -1 -15等,默认是-9(sigkill);


fuser -uv .
在输出结果中,权限列ACCESS,各个参数代表的意义
c:此程序在当前的目录下
e:可被触发为执行状态
f:是一个被开启的档案
r:代表顶层目录
F:该档案被开启,不过在等待回应中
m:可能未分享的动态函数库


————————————————————————
lsof 列出被程序所开启的文件
相对于fuser是由档案或者装置去找出使用该档案或装置的程序,反过来说,如何查出某个程序开启或者使用的档案和装置?lsof
选项和参数
-a:多项数据需要同时成立,才显示 and
-U:仅列出Unix like 系统的socket 文件类型
-u:后面接 username,列出该用户相关程序所开启的文件
+d:后面接 目录,找出该目录下已经被开启的文件
----
pidof 找出某支正在执行的程序pid
pidof [-sx] program_name
选项和参数
-s:仅仅列出一个pid,而不列出所有的pid
-x:同时列出该programe name可能的ppid程序的pid






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值