在Linux系统当中,出发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个ID
称为PID,同时依据启发这个程序的用户与相关属性关系,给予这个PID一组权限的设定。
不同的用户执行同一个程序会有不同的执行权限,用户执行程序的过程
如图1
程序(programe):通常为二进制文件,放置在存储媒介
进程(process):进程就是一个正在运行的程序
子进程与父进程:
当我们登录系统时会取得一个bash的shell,然后用这个bash提供的接口去其他执行命令的时候,就会
产生新的PID,那个后来执行的命令的PID就是子进程,这个子进序的PPID就是父进程
如图2
系统或网络服务:常驻在内存中的程序
特殊程序管理行为:
Linux机会绝不对当机的,应为在任何时候,他可以将某个卡主的程序杀掉,然后再重新执行该程序
而不用重新启动,如果我们在Linux下文字界面登入,当屏幕当中显示的错误信息是死掉,这时就可以按
Alt+[F1]...[F7]来切换到其他终端机界面,然后使用ps -aux找出刚刚发生错误的进程,然后kill掉就可以了。
bash环境下的工作管理(job control)
当我们登入bash之后,就取得一个bash的PID,在这个PID接口下我们可以进行多个工作
cp file1 file2 &
&:表示这个file1文件复制到file2,而且置于背景中执行,而当这个命令执行完毕时,系统会在终端显示完成的消息。
什么是工作管理?
在进行工作管理的行为中,其实每一个工作都是目前bash的子进程,即彼此之间是有相关性的,不能以job control的方式在TTY
下去管理tty2的bash。
进行job control必须注意到的限制是:
1.这些工作所触发的进程必须来自以你的shell的子进程
2.前景:你可以控制与下达命令的这个环境称之为前景工作
3.背景:可以自动运行的工作,无法使用ctrl +c终止他,可以使用bg/fg呼叫该工作
4.背景中执行的进程不等等待终端的输入
将目前工作丢掉背景中【暂停】:crtl+Z
观察目前的背景工作状态:jobs
jobs [-lrs]
-l:list
-r:running
-s:stop
将背景工作调到前景处理:fg %jobnumber
让工作在背景下的状态运作:bg &jobnumber
管理背景当中的工作进程:kill -signal %jobnumber
kill :
-l:这个是L的小写,列出目前kill能够使用的讯号
-1:重新读取一次参数的配置文件
-2:代表由键盘输入ctrl+c同样的动作
-9:立刻强制删除一个动作
-15:以正常的程序方式终止一项工作
脱机管理问题
我们在工作管理当中提到的‘背景’指的是在终端机模式下可以避免ctrl+c终端一个进程的情景下,并不是
真的后台执行,工作管理依旧与终端有关系,当远程登录执行&放到背景进程,在工作中尚未完成的时候
结束你脱机工作,那么进程就会被中断。
nohup [指令与参数] <==在终端前景
nohup [指令与参数] & <==在终端后景
进程的观察
ps:将某个时间点的进程运行情况截取下来
ps aux 观察系统所有的进程数据
ps -lA 也就能够所观察所有系统数据
ps axjf 连同部分进程树状态
程序管理:
kill -signal PID
kill -signal #M :后面直接加数字:这个数字是代表PID
kill -signal %jobnumber 代表前景或背景工作
killall [ieI] [command name]
-i:interactive的意思,交互式的
-e:exact的意思
-I:指令名称忽略大小写
进程的执行顺序:
由于PRI是核心动态调整的,我们用户也无权干涉PRI,调整进程优先级,就得要透过NICE值,这个
NICE就是下图的NI,PRI(new)=PRI(old)+NICE,PRI越小越早被执行
root可以随意调整自己及他人的进程nice值
一般用户仅可以调整自己进程的nice值且范围是0~19
一般用户仅可将nice值越调越高
nice [-n 数字] command
一存在进程:
renice [number] PID
注:整个nice值是可以在父进程传递给子进程的
系统资源查看:以下命令在日常的服务器维护使用
查看系统内容 free [-b|-k|-m—|g|][-t]
查看系统内核:uname [-asrmpi]
观察系统启动时间和工作负载:uptime
追中网络或插槽文件:netstat
分析核心产生的信息:dmesg
侦测系统资源:vmastat :vmstat 1 3 统计目前主机状态,每秒一次,共计三次
特殊文件及进程
具有SUID/SGID权限的命令执行状态
.SUID权限仅对二进制进程(binary programe)有效
.执行者对于该进程需要具有X的执行权限
.本权限仅在执行这个进程的过程中有效
.执行者将具有该进程拥有者的权限
查询整个系统的SUID/SGID的权限:find / -perm +6000
/proc/*目录下代表的意义
所谓进程都是在内存中的,为内存当中的数据都是写入/proc/*这个目录下,基本上,目前主机上的
各个进程的PID都是以目录形态存在于/proc/1中,该目录底下的相关文件可能会对将来编写某些工具有帮助。
查询已开启文件或已执行的进程开启的文件
fuser [-umv][-k [i] [signal]] file/dir
-u:除了程序的PID,同时列出进程的拥有者;
-m:后面接的那个文件名个会主动的上提到该文件系统最顶层,对umount不成功很有效
-v:可以列出每个文件与进程还有完整相关性
-i:必须与-k配合,删除PID之前会会询问使用者的意愿
列出被进程所开启的文件名 lsof [-aUu] [+d]
列出正在执行的进程:pidof [-sx] programe_name