1.PID

  触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置。

  同一个程序不同使用者得到的PID是不同的:

  

2.切换登录窗口可以使用alt+F1~F7进行切换

3.将指令丢到背景中“执行”的 &

4.将“目前”的工作丢到背景中“暂停”:[ctrl]-z

5.观察目前的背景工作状态: jobs

6.将背景工作拿到前景来处理:fg

[root@study ~]# fg %jobnumber
选项与参数:
%jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!
范例一:先以 jobs 观察工作,再将工作取出:
[root@study ~]# jobs -l
[1]- 14566 Stopped vim ~/.bashrc
[2]+ 14567 Stopped find / -print
[root@study ~]# fg <==默认取出那个 + 的工作,亦即 [2]。立即按下[ctrl]-z
[root@study ~]# fg %1 <==直接规定取出的那个工作号码!再按下[ctrl]-z
[root@study ~]# jobs -l
[1]+ 14566 Stopped vim ~/.bashrc
[2]- 14567 Stopped find / -print

7.让工作在背景下的状态变成运行中: bg

8.管理背景当中的工作: kill

[root@study ~]# kill -signal %jobnumber
[root@study ~]# kill -l
选项与参数:
-l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
-1 :重新读取一次参数的配置文件 (类似 reload);
-2 :代表与由键盘输入 [ctrl]-c 同样的动作;
-9 :立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作。与 -9 是不一样的。
范例一:找出目前的 bash 环境下的背景工作,并将该工作“强制删除”。
[root@study ~]# jobs
[1]+ Stopped vim ~/.bashrc
[2] Stopped find / -print
[root@study ~]# kill -9 %2; jobs
[1]+ Stopped vim ~/.bashrc
[2] Killed find / -print
# 再过几秒你再下达 jobs 一次,就会发现 2 号工作不见了!因为被移除了!
范例二:找出目前的 bash 环境下的背景工作,并将该工作“正常终止”掉。
[root@study ~]# jobs
[1]+ Stopped vim ~/.bashrc
[root@study ~]# kill -SIGTERM %1
# -SIGTERM 与 -15 是一样的!您可以使用 kill -l 来查阅!
# 不过在这个案例中, vim 的工作无法被结束喔!因为他无法通过 kill 正常终止的意思!

程序的观察

  1.ps :将某个时间点的程序运行情况撷取下来

[root@study ~]# ps aux <==观察系统所有的程序数据
[root@study ~]# ps -lA <==也是能够观察所有系统的数据
[root@study ~]# ps axjf <==连同部分程序树状态
选项与参数:
-A :所有的 process 均显示出来,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
x :通常与 a 这个参数一起使用,可列出较完整信息。
输出格式规划:
l :较长、较详细的将该 PID 的的信息列出;
j :工作的格式 (jobs format)
-f :做一个更为完整的输出。

  更多请参见手册介绍:http://linux.51yip.com/search/ps

通常鸟哥都会建议你,直接背两个比较不同的选项, 一个是只能查阅自己 bash 程序的“
ps -l ”一个则是可以查阅所有系统运行的程序“ ps aux ”!注意,你没看错,是“ ps aux ”没有那
个减号 (-) !

  示例:

[root@localhost ~]# ps -ef   #显示所有进程的UID,PPIP,C与STIME栏位
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 18:24 ?        00:00:00 init [3]
root         2     1  0 18:24 ?        00:00:00 [migration/0]
root         3     1  0 18:24 ?        00:00:00 [ksoftirqd/0]
root         4     1  0 18:24 ?        00:00:00 [watchdog/0]
root         5     1  0 18:24 ?        00:00:00 [migration/1]

  相关输出栏位介绍:

F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:
若为 4 表示此程序的权限为 root ;
若为 1 则表示此子程序仅进行复制(fork)而没有实际执行(exec)。
S:代表这个程序的状态 (STAT),主要的状态有:
R (Running):该程序正在运行中;
S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>打印)
T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
UID/PID/PPID:代表“此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号 码” C:代表 CPU 使用率,单位为百分比; PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先顺序,数值越小代表该 程序越快被 CPU 执行。详细的 PRI 与 NI 将在下一小节说明。 ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪 个部分,如果是个 running 的程序,一般就会显示“ - ” / SZ 代表此程序用掉多少内存 / WCHAN 表示目前程序是否运行中,同样的, 若为 - 表示正在运行中。 TTY:登陆者的终端机位置,若为远端登陆则使用动态终端接口 (pts/n); TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时 间; CMD:就是 command 的缩写,造成此程序的触发程序之指令为何。

  2.top——top:动态观察程序的变化

 top 这个程序可以持续
的监测整个系统的程序工作状态。 在默认的情况下,每次更新程序资源的时间为 5 秒,不
过,可以使用 -d 来进行修改。

  列名解释:

序号    列名    含义
a        PID        进程id
b        PPID    父进程id
c        RUSER    Real user name
d        UID        进程所有者的用户id
e        USER    进程所有者的用户名
f        GROUP    进程所有者的组名
g        TTY        启动进程的终端名。不是从终端启动的进程则显示为 ?
h        PR        优先级
i        NI        nice值。负值表示高优先级,正值表示低优先级
j        P        最后使用的CPU,仅在多CPU环境下有意义
k        %CPU    上次更新到现在的CPU时间占用百分比
l        TIME    进程使用的CPU时间总计,单位秒
m        TIME+    进程使用的CPU时间总计,单位1/100秒
n        %MEM    进程使用的物理内存百分比
o        VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p        SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
q        RES        进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r        CODE    可执行代码占用的物理内存大小,单位kb
s        DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t        SHR        共享内存大小,单位kb
u        nFLT    页面错误次数
v        nDRT    最后一次写入到现在,被修改过的页面数。
w        S        进程状态。D=不可中断的睡眠状态R=运行S=睡眠T=跟踪/停止Z=僵尸进程
x        COMMAND    命令名/命令行
y        WCHAN    若该进程在睡眠,则显示睡眠中的系统函数名
z        Flags    任务标志,参考 sched.h默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容

  3.pstree——以树状图的方式展现进程之间的派生关系,显示效果比较直观。
  4.程序的管理(开关等)
  
要给予某个已经存在背景中的工作某些动作时,是直接给予一个讯号给该工作号码即可。那么到底有多少 signal 呢? 你可以使用 kill -l(小写的 L ) 或者是 man 7 signal 都可以查询到!主要的讯号代号与名称对应及内容是:

  

  根据以上的信号,就可以进行程序的管理了!(比较重要的是1,9,15)

kill -signal PID

  kill 可以帮我们将这个 signal 传送给某个工作 (%jobnumber) 或者是某个 PID (直接输入数字)

killall -signal 指令名称

  由于 kill 后面必须要加上 PID (或者是 job number),所以,通常 kill 都会配合 ps, pstree,直接通过kaiiall可以给程序名称传送讯号!

[root@study ~]# killall [-iIe] [command name]
选项与参数:
-i :interactive 的意思,互动式的,若需要删除时,会出现提示字符给使用者;
-e :exact 的意思,表示“后面接的 command name 要一致”,但整个完整的指令
不能超过 15 个字符。
-I :指令名称(可能含参数)忽略大小写。
范例一:给予 rsyslogd 这个指令启动的 PID 一个 SIGHUP 的讯号
[root@study ~]# killall -1 rsyslogd
# 如果用 ps aux 仔细看一下,若包含所有参数,则 /usr/sbin/rsyslogd -n 才是最完整的!
范例二:强制终止所有以 httpd 启动的程序 (其实并没有此程序在系统内)
[root@study ~]# killall -9 httpd
范例三:依次询问每个 bash 程序是否需要被终止运行!
[root@study ~]# killall -i -9 bash
Signal bash(13888) ? (y/N) n <==这个不杀!
Signal bash(13928) ? (y/N) n <==这个不杀!
Signal bash(13970) ? (y/N) n <==这个不杀!
Signal bash(14836) ? (y/N) y <==这个杀掉!
# 具有互动的功能!可以询问你是否要删除 bash 这个程序。要注意,若没有 -i 的参数,
# 所有的 bash 都会被这个 root 给杀掉!包括 root 自己的 bash 喔! ^_^

  5.free :观察内存使用情况

    更多参数选项,参考:http://man.linuxde.net/free

  6.uname:查阅系统与核心相关信息

[root@study ~]# uname [-asrmpi]
选项与参数:
-a :所有系统相关的信息,包括下面的数据都会被列出来;
-s :系统核心名称
-r :核心的版本
-m :本系统的硬件名称,例如 i686 或 x86_64 等;
-p :CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型!
-i :硬件的平台 (ix86)
范例一:输出系统的基本信息
[root@study ~]# uname -a
Linux study.centos.vbird 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015
x86_64 x86_64 x86_64 GNU/Linux

  7.uptime:观察系统启动时间与工作负载

    这个 uptime 可以显示出 top 画面的最上面一行!

  8.netstat :追踪网络或插槽档——侦听端口情况

[root@study ~]# netstat -[atunlp]
选项与参数:
-a :将目前系统上所有的连线、监听、Socket 数据都列出来
-t :列出 tcp 网络封包的数据
-u :列出 udp 网络封包的数据
-n :不以程序的服务名称,以埠号 (port number) 来显示;
-l :列出目前正在网络监听 (listen) 的服务;
-p :列出该网络服务的程序 PID

# netstat -lntp #查看监听(Listen)的端口
# netstat -antp #查看所有建立的TCP连接

  9.dmesg :分析核心产生的讯息

范例一:输出所有的核心开机时的信息
[root@study ~]# dmesg | more
范例二:搜寻开机的时候,硬盘的相关信息为何?
[root@study ~]# dmesg | grep -i vda
[ 0.758551] vda: vda1 vda2 vda3 vda4 vda5 vda6 vda7 vda8 vda9
[ 3.964134] XFS (vda2): Mounting V4 Filesystem
....(下面省略)....

  10.vmstat :侦测系统资源变化

特殊权限说明

  之前提到的SUID等特殊权限:

SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 的权限。

  device is busy的处理:找出正在使用该文件的程序——fuser

[root@study ~]# fuser [-umv] [-k [i] [-signal]] file/dir
选项与参数:
-u :除了程序的 PID 之外,同时列出该程序的拥有者;
-m :后面接的那个文件名会主动的上提到该文件系统的最顶层,对 umount 不成功很有效!
-v :可以列出每个文件与程序还有指令的完整相关性!
-k :找出使用该文件/目录的 PID ,并试图以 SIGKILL 这个讯号给予该 PID;
-i :必须与 -k 配合,在删除 PID 之前会先询问使用者意愿!
-signal:例如 -1 -15 等等,若不加的话,默认是 SIGKILL (-9) 啰!
范例一:找出目前所在目录的使用 PID/所属帐号/权限 为何?
[root@study ~]# fuser -uv .
USER PID ACCESS COMMAND
/root: root 13888 ..c.. (root)bash
root 31743 ..c.. (root)bash

  acess列的补充说明:

c :此程序在当前的目录下(非次目录);
e :可被触发为执行状态;
f :是一个被打开的文件;
r :代表顶层目录 (root directory);
F :该文件被打开了,不过在等待回应中;
m :可能为分享的动态函数库;

  1.lsof :列出被程序所打开的文件文件名

[root@study ~]# lsof [-aUu] [+d]
选项与参数:
-a :多项数据需要“同时成立”才显示出结果时!
-U :仅列出 Unix like 系统的 socket 文件类型;
-u :后面接 username,列出该使用者相关程序所打开的文件;
+d :后面接目录,亦即找出某个目录下面已经被打开的文件!
范例一:列出目前系统上面所有已经被打开的文件与设备:
[root@study ~]# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 4096 128 /
systemd 1 root rtd DIR 253,0 4096 128 /
systemd 1 root txt REG 253,0 1230920 967763 /usr/lib/systemd/systemd
....(下面省略)....
# 注意到了吗?是的,在默认的情况下, lsof 会将目前系统上面已经打开的
# 文件全部列出来~所以,画面多的吓人啊!您可以注意到,第一个文件 systemd 执行的
# 地方就在根目录,而根目录,嘿嘿!所在的 inode 也有显示出来喔!
范例二:仅列出关于 root 的所有程序打开的 socket 文件
[root@study ~]# lsof -u root -a -U
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 3u unix 0xffff8800b7756580 0t0 13715 socket
systemd 1 root 7u unix 0xffff8800b7755a40 0t0 1902 @/org/freedesktop/systemd1/notify
systemd 1 root 9u unix 0xffff8800b7756d00 0t0 1903 /run/systemd/private
.....(中间省略).....
Xorg 4496 root 1u unix 0xffff8800ab107480 0t0 25981 @/tmp/.X11-unix/X0
Xorg 4496 root 3u unix 0xffff8800ab107840 0t0 25982 /tmp/.X11-unix/X0
Xorg 4496 root 16u unix 0xffff8800b7754f00 0t0 25174 @/tmp/.X11-unix/X0
.....(下面省略).....
# 注意到那个 -a 吧!如果你分别输入 lsof -u root 及 lsof -U ,会有啥信息?
# 使用 lsof -u root -U 及 lsof -u root -a -U ,呵呵!都不同啦!
# -a 的用途就是在解决同时需要两个项目都成立时啊! ^_^
范例三:请列出目前系统上面所有的被启动的周边设备
[root@study ~]# lsof +d /dev
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 0u CHR 1,3 0t0 1028 /dev/null
systemd 1 root 1u CHR 1,3 0t0 1028 /dev/null
# 看吧!因为设备都在 /dev 里面嘛!所以啰,使用搜寻目录即可啊!
范例四:秀出属于 root 的 bash 这支程序所打开的文件
[root@study ~]# lsof -u root | grep bash
ksmtuned 781 root txt REG 253,0 960384 33867220 /usr/bin/bash
bash 13888 root cwd DIR 253,0 4096 50331777 /root
bash 13888 root rtd DIR 253,0 4096 128 /
bash 13888 root txt REG 253,0 960384 33867220 /usr/bin/bash
bash 13888 root mem REG 253,0 106065056 17331169 /usr/lib/locale/locale-archive
....(下面省略)....

  2.pidof :找出某支正在执行的程序的 PID

[root@study ~]# pidof [-sx] program_name
选项与参数:
-s :仅列出一个 PID 而不列出所有的 PID
-x :同时列出该 program name 可能的 PPID 那个程序的 PID
范例一:列出目前系统上面 systemd 以及 rsyslogd 这两个程序的 PID
[root@study ~]# pidof systemd rsyslogd
1 742
# 理论上,应该会有两个 PID 才对。上面的显示也是出现了两个 PID 喔。
# 分别是 systemd 及 rsyslogd 这两支程序的 PID 啦。

SELinux初探

  参考:http://www.toxingwang.com/management/security/1011.html

      http://blog.csdn.net/myarrow/article/details/9856095

转载于:https://www.cnblogs.com/jiangbei/p/8075602.html

Linux入门进阶第四天(下)——程序管理(补充内容)相关推荐

  1. linux系统export,Linux入门进阶 - 如何在Linux中使用export命令

    原标题:Linux入门进阶 - 如何在Linux中使用export命令 来自: Linux迷 链接:https://www.linuxmi.com/linux-export.html Linux ex ...

  2. linux 网站访问密码,Linux入门教程:如何在nginx下实现访问web网站密码认证保护的功能,nginxweb以便拒绝那些不速之客...

    Linux入门教程:如何在nginx下实现访问web网站密码认证保护的功能,nginxweb以便拒绝那些不速之客 在某些特定的环境下,我们希望nginx下的web站点在访问时需要用户输入账户密码才能访 ...

  3. Linux入门进阶 - 如何在Linux中使用export命令

    Linux export命令会标记哪些值需要传递给一组子进程.这是bash shell提供的一个简单但有用的特性.它允许管理员在不中断当前会话的情况下传递环境的配置参数.这就是为什么在终端会话重新启动 ...

  4. Linux入门学习(四)—— 什么链接文件?软链接文件和硬链接文件有什么区别以及特点?

    引言:上期回顾(想要学习的童鞋可以点击看看) 前几章我们所说的命令都是针对文件和文件夹,和一些常用操作.今天我们来学习特殊一点的文件"链接文件",这一章节会告诉大家什么是链接文件, ...

  5. 【Linux入门连载一】[Win10下安装Linux虚拟机]VMWare15运行CentOS7(亲测有效)

    写在前面:本文根据狂神的Linux视频完成而来 笔者之前安装的双系统,用的是Ubuntu.现在安装的是虚拟机,用的是CentOS. 主要目的是学习Linux系统的基本知识.而本文呢,主要记录自己安装软 ...

  6. Linux入门学习(四)

    VIM 在vim异常退出时,系统中会在所编辑的文件目录中生成.file.swp,vim再次编辑此文件时会出现相应提示 按 "o":open(打开) 按 "e": ...

  7. SAP入门技术分享四:模块化程序

    模块化程序 1.子程序概要 2.子程序定义 3.子程序参数 (1)传递参数的方法 (2)定义参数类型 (3)参数与结构体 (4)参数与内表 4.调用子程序 (1)调用程序内部子程序 (2)调用程序外部 ...

  8. 蓝桥云课linux入门3:用户及文件权限管理

    内容转自蓝桥云课 目录 1.内容 2.Linux用户管理 2.1查看用户 2.2创建用户 2.3用户组 将其它用户加入 sudo 用户组 2.4删除用户和用户组 3.Linux文件权限 3.1查看文件 ...

  9. linux c语言 cmos,c语言编写程序读写CMOS内容

    ; 郑重声明:本程序读出并以十六进制形式显示CMOS中的前64个基本信息,然后清零. ; 因此,不会设置CMOS参数者,请不要编译.运行本程序.若因此而造成的任何损失, ; 责任自负.特此声明. ; ...

最新文章

  1. R语言plot函数散点图、密度图实战
  2. 征文 | 第一届全国计算社会科学高端论坛
  3. CSS画基本图形——圆
  4. python刷新显示_Python在同一位置刷新显示进度信息
  5. 如何正确认识大数据分析
  6. 智能优化算法:细菌觅食优化算法 - 附代码
  7. 机器学习十大算法简介
  8. 海阔天空 在勇敢以后 --我的求职路
  9. Mybatis事务管理SqlSession
  10. sqlserver还原数据库时失败因为 当前没有数据库备份
  11. 关于电脑端微信小程序不能启动解决
  12. 高中数学学习技巧,这几步你都做到了吗?
  13. Android USB tethering相关代码
  14. mysql建表是要注意什么问题_MySQL建表注意事项
  15. 原生小程序转Taro开发
  16. 立创eda学习笔记十四:pcb板画布设置
  17. 思维导图的分类 利用思维导图绘制学习知识方法介绍
  18. python标签打印_Python 实现自动完成A4标签排版打印功能
  19. vs2013 与mysql的连接数据库_VS2013连接Mysql数据库的设置以及常见问题
  20. 机器学习(四)SVM之根据相关数据预测交通流量

热门文章

  1. 深入浅出Redis-redis哨兵集群
  2. 计算机系统是如何实现控制外接设备,计算机I/O接口与系统的连接
  3. securefx 堡垒机_在有跳板机的情况下,SecureCRT自动连接到目标服务器
  4. LINE_AA未定义标识符
  5. 雪碧图 sprite
  6. ROS机器人从零开始——ROS的认识与理解
  7. OpenSSL1.1.1没有libeay.dll和ssleay.dll
  8. 自动量程万用表的实现原理_钳形表和万用表哪个测量更准?老司机深入讲解两者有何不同之处...
  9. html 有些图片被uc浏览器屏蔽的问题
  10. 机器学习四大基本模型:回归、分类、聚类、降维