什么是程序(Process):
子程序与父程序:
fork and exec:程序呼叫的流程:
系统或网络服务:常驻在内存的程序
多重登陆环境的七个基本终端窗口:/etc/inittab
工作管理(jobcontrol):
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 命令名称
Priority 与Nice 值
nice :新运行的命令即给予新的nice 值
renice :已存在程序的nice 重新调整
系统资源的观察:
free :观察内存使用情况
uname:查阅系统与核心相关资讯
uptime:观察系统启动时间与工作负载
netstat :追踪网络或插槽档
dmesg :分析核心产生的信息
vmstat :侦测系统资源变化
特殊文件与程序:
具有SUID/SGID 权限的命令运行状态
/proc/* 代表的意义
fuser:藉由文件(或文件系统)找出正在使用该文件的程序
lsof :列出被程序所开启的文件档名
pidof :找出某支正在运行的程序的PID
SELinux初探:
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 来管