首先明确程序与进程的概念:
程序指存在磁盘中静态的可执行文件。它通过用户执行来触发,触发后加载到内存中成为一个进程。为了操作系统可以管理这个进程,因此进程还会被给予执行者权限、属性等参数,还包含进程所需要的脚本与数据等。
每个进程都有一个特定的PID,对进程的控制很多都是基于PID实现的。例如,可以用kill指令给进程发送特定的signal。常见的signal有以下几种:
代号 | 名称 | 内容 |
---|---|---|
1 | SIGHUP | 启动被终止进程,可以重新读取相应配置文件,类似重新启动 |
2 | SIGINT | 相当于用键盘的ctrl+c来中断一个进程的进行 |
9 | SIGKILL | 强制中断一个进程,如果该进程进行到一半,可能会有“半成品”遗留下来 |
15 | SIGTERM | 以正常方式结束一个进程。如果进程发送问题无法正常终止,则该信号没用 |
17 | SIGSTOP | 相当于用键盘的ctrl+z来暂停 |
kill
必须使用PID(或者job number)。而killall
可以以“执行命令的名称”来给予信号。一般,要删除某个进程,可以使用kill PID
的方式。而要删除某个服务呢,最简单的办法就是利用killall
,它可以将所有以某个命令名称启动的进程全部删除。
SELinux
SELinux是Security Enhanced Linux的缩写。它通过强制访问控制MAC(Mandatory Access Control)的方法控制系统安全。MAC控制的主体是进程,目标则是该进程能否读取文件资源。
安全上下文有点像系统内的rwx权限控制部分,它通过主体进程的domain(域)和文件资源的type(类型)匹配来确定进程的权限(域和类型都是在SELinux中定义的)