linux 程序管理

时间:2021-02-01 12:12:40
在linux下做开发,经常要用到一些管理程序的命令,如查看进程,查看内存等情况。看网络情况。如下的笔记是看书时记下一些简单常用的命令。
1)top
[root@005 fsh]#top[-d数字]|top[-bnp]
选项与参数:
-d :后面可以接秒数,就是整个程序画面更新的秒数。预设是5秒;
-b :以批次的方式执行top,还有更多的参数可以使用喔!
 
通常会搭配数据流重导向来将批次的结果输出成为档案。
-n :与-b搭配,意义是,需要进行几次top的输出结果。
-p :指定某些个PID来进行观察监测而已。
 
在top执行过程当中可以使用的按键指令:
?:显示在top当中可以输入的按键指令;
P:以CPU的使用资源排序显示;
M:以Memory的使用资源排序显示;
N:以PID来排序喔!
T:由该Process使用的CPU时间累积(TIME+)排序。
k:给予某个PID一个讯号(signal)
r:给予某个PID重新制订一个nice值。
q:离开top软件的按键。
 
2) pstree
[root@005 fsh]#pstree[-A|U][-up]
选项与参数:
-A :各程序树之间的连接以ASCII字符来连接;
-U :各程序树之间的连接以万国码的字符来连接。在某些终端接口下可能会有错误;
-p :并同时列出每个process的PID;
-u :并同时列出每个process的所属账号名称。
 
3)killall
[root@005 fsh]#killall[-iIe][commandname]
选项与参数:
-i :interactive的意思,交互式的,若需要删除时,会出现提示字符给使用者;
-e :exact的意思,表示『后面接的commandname要一致』,但整个完整的指令
不能超过15个字符。
-I :指令名称(可能含参数)忽略大小写。
 
4) Priority与Nice值
  a)priority (PRI) 值越低代表越优先的意思。这个PRI核心动态调整程序的优先级。使用者无法直接调整PRI值的。
    [root@005 fsh]# ps -l
    F S UID PID    PPID C PRI NI ADDR  SZ WCHAN TTY TIME CMD
    4 R 0     1820  7000 0 80  0   - 27024 - pts/4 00:00:00 ps
    4 S 0     7000  6975 0   0   - 27108 wait pts/4 00:00:00 bash
 
  b)由于PRI是核心动态调整的,我们使用者也无权去干涉PRI!那如果你想要调整程序的优先执行序时,
     就得要透过Nice值了!Nice值就是上表的NI啦!一般来说,PRI与NI的相关性如下:
     PRI(new)=PRI(old)+nice
 
   c)我们必须注意到
    1.nice值可调整的范围为-20~19;
    2.root可随意调整自己或他人程序的Nice值,且范围为-20~19;
    3.一般使用者仅可调整自己程序的Nice值,且范围仅为0~19(避免一般用户抢占系统资源);
    4.一般使用者仅可将nice值越调越高,例如本来nice为5,则未来仅能调整到大于5;
 
   d)调整某个程序的优先执行序
    1.一开始执行程序就立即给予一个特定的nice值:用nice指令;
    2.调整某个已经存在的PID的nice值:用renice指令。
   
   e)nice
    [root@005 fsh]#nice[-n]command
    选项与参数:
    -n :后面接一个数值,数值的范围-20~19。
    如:
    范例一:用root给一个nice植为-5,用于执行vi,并观察该程序!
    [[root@005 fsh]# nice -n -5 vi &
    [1] 28923
    You have mail in /var/spool/mail/root
    [root@005 fsh]# ps -l
    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    4 S 0 7000 6975 0 80 0 - 27108 wait pts/4 00:00:00 bash
    4 T 0 28923 7000 0 75 -5 - 29245 signal pts/4 00:00:00 vi
    4 R 0 29121 7000 0 80 0 - 27031 - pts/4 00:00:00 ps
 
    [1]+ Stopped nice -n -5 vi
 
   f)renice:已存在程序的nice重新调整
    [root@005 fsh]#renice[number]PID
    选项与参数:
    PID:某个程序的ID啊!
 
5)free:观察内存使用情况
 [root@005 fsh]#free[-b|-k|-m|-g][-t]
选项与参数:
-b :直接输入free时,显示的单位是Kbytes,我们可以使用b(bytes),m(Mbytes)
k(Kbytes),及g(Gbytes)来显示单位喔!
-t :在输出的最终结果,显示物理内存与swap的总量。
 
一般来说,swap最好不要被使用,尤其swap最好不要被使用
超过20%以上,如果您发现swap的用量超过20%,那么,最好还是买物理内存来插吧!因为,Swap
的效能跟物理内存实在差很多,而系统会使用到swap,绝对是因为物理内存不足了才会这样做的。
 
6) uname:查阅系统与核心相关信息
[root@005 fsh]#uname[-asrmpi]
选项与参数:
-a :所有系统相关的信息,包括底下的数据都会被列出来;
-s :系统核心名称
-r :核心的版本
-m :本系统的硬件名称,例如i686或x86_64等;
-p :CPU的类型,与-m类似,只是显示的是CPU的类型!
-i :硬件的平台(ix86)
 
7)uptime:观察系统启动时间与工作负载
netstat:追踪网络或插槽文件
[root@005 fsh]#netstat-[atunlp]
选项与参数:
-a :将目前系统上所有的联机、监听、Socket数据都列出来
-t :列出tcp网络封包的数据
-u :列出udp网络封包的数据
-n :不已程序的服务名称,以埠号(portnumber)来显示;
-l :列出目前正在网络监听(listen)的服务;
-p :列出该网络服务的程序PID
 
如:
找出目前系统上已在监听的网络联机及其PID
[root@005 fsh]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2894/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1099/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1175/master
tcp 0 0 0.0.0.0:5050 0.0.0.0:* LISTEN 9605/python
tcp 0 0 0.0.0.0:5051 0.0.0.0:* LISTEN 9610/python
tcp 0 0 0.0.0.0:7100 0.0.0.0:* LISTEN 8726/nginx
tcp 0 0 0.0.0.0:93 0.0.0.0:* LISTEN 9611/python
 
8) dmesg:分析核心产生的讯息
系统在开机的时候,核心会去侦测系统的硬件,你的某些硬件到底有没有被捉到,那就与这个时候的侦测
有关。
范例一:输出所有的核心开机时的信息
[root@005 fsh]#dmesg|more
范例二:搜寻开机的时候,硬盘的相关信息为何?
[root@005 fsh]#dmesg|grep-ihd
 
9) vmstat:侦测系统资源变化
[root@005 fsh]#vmstat[-a][延迟[总计侦测次数]]<==CPU/内存等信息
[root@005 fsh]#vmstat[-fs] <==内存相关
[root@005 fsh]#vmstat[-S单位] <==设定显示数据的单位
[root@005 fsh]#vmstat[-d] <==与磁盘有关
[root@005 fsh]#vmstat[-p分割槽] <==与磁盘有关
选项与参数:
-a :使用inactive/active(活跃与否)取代buffer/cache的内存输出信息;
-f :将开机到目前为止,系统复制(fork)的程序数;
-s :将一些事件(开机至目前为止)导致的内存变化情况列表说明;
-S :后面可以接单位,让显示的数据有单位。例如K/M取代bytes的容量;
-d :列出磁盘的读写总量统计表
-p :后面列出分割槽,可显示该分割槽的读写总量统计表