子程序与父程序:
fork and exec:程序呼叫的流程:
系统或网络服务:常驻在内存的程序
多重登陆环境的七个基本终端窗口:/etc/inittab
job control 的管理:直接将命令丢到背景中『运行』的&
将『目前』的工作丢到背景中『暂停』:[ctrl]-z
观察目前的背景工作状态:jobs
将背景工作拿到前景来处理:fg对应&
让工作在背景下的状态变成运行中:bg对应[ctrl]-z
管理背景当中的工作:kill
离线管理问题:nohup
程序管理:
程序的观察:
ps :将某个时间点的程序运行情况撷取下来
仅观察自己的bash 相关程序:ps -l
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 的缩写,造成此程序的触发程序之命令为何。
观察系统所有程序:ps aux
top:动态观察程序的变化
pstree:程序之间的相关性
程序的管理:
kill -signal PID
killall -signal 命令名称
代号 | 名称 | 内容 |
1 | SIGHUP | 启动被终止的程序,可让该PID 重新读取自己的配置档,类似重新启动 |
2 | SIGINT | 相当於用键盘输入[ctrl]-c 来中断一个程序的进行 |
9 | SIGKILL | 代表强制中断一个程序的进行,如果该程序进行到一半,那么尚未完成的部分可能会有『半产品』产生,类似vim会有.filename.swp 保留下来。 |
15 | SIGTERM | 以正常的结束程序来终止该程序。由於是正常的终止,所以后续的动作会将他完成。不过,如果该程序已经发生问题,就是无法使用正常的方法终止时,输入这个 signal 也是没有用的。 |
17 | SIGSTOP | 相当於用键盘输入[ctrl]-z 来暂停一个程序的进行 |
Priority 与Nice 值
nice :新运行的命令即给予新的nice 值
renice :已存在程序的nice 重新调整
系统资源的观察:
free :观察内存使用情况
uname:查阅系统与核心相关资讯
uptime:观察系统启动时间与工作负载
netstat :追踪网络或插槽档
dmesg :分析核心产生的信息
vmstat :侦测系统资源变化
具有SUID/SGID 权限的命令运行状态
/proc/* 代表的意义
fuser:藉由文件(或文件系统)找出正在使用该文件的程序
lsof :列出被程序所开启的文件档名
pidof :找出某支正在运行的程序的PID
SELinux 的运行模式:
安全性本文的一般配置为:『Identify:role:type』其中又以type 最重要;
SELinux 的模式有:enforcing, permissive, disabled 三种,而启动的政策(Policy) 主要是targeted
SELinux 启动与关闭的配置档在:/etc/selinux/config
SELinux 的启动与观察:getenforce, sestatus 等命令
重设SELinux 的安全性本文可使用restorecon 与chcon
在SELinux 有启动时,必备的服务至少要启动setroubleshoot
若要管理默认的SELinux 布林值,可使用getsebool, setsebool 来管