1. 程序
程序是指令及参数的集合,按照既定的逻辑控制计算机运行完成特定的任务
- 程序是静态的,不具有任何的运动意义
- 程序是封闭的
2. 进程
进程是指运动中的程序,是操作系统执行的基本单位,是程序的运行过程
- 是动态的,具有生命周期的,是一个运动状态
- 从操作系统的核心看,进程是操作系统分配内存,cpu时间片等资源的基本单位(最小单位)
- 每一个进程都有独立的地址空间和执行状态
- 每一个进程对应着一个程序,而相同的程序在不同的数据集上运行就是不同的进程
- 进程具有并发性和交互性
进程与线程的区别
- 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
- 线程不能单独执行,但每一个线程都有程序的入口,执行序列以及程序出口,只有组成进程了才能够被执行
3. 进程生命周期
父进程复制自己的地址空间,创建一个新的(子)进程结构,每个进程分配唯一的进程ID (PID),满足跟踪安全性的需求。
PID和父进程ID(PPID)都是子进程的元素。每一个进程都可以创建子进程,所有的进程都是第一个系统进程的子进程。
Centos6:第一个进程 —— init
Centos7:第一个进程—— systemd
子进程是友父进程所产生的进程。在Linux系统,使用系统调用fock创建进程。fock复制:父进程的数据和堆栈段及父进程的进程环境。子进程继承父进程的安全性身份,过去及当前的文件描述符,端口和资源特权,环境变量,以及程序代码。之后,子进程也可以运行自己的程序代码。在子进程运行的时间段,父进程进入sleeping状态,当子进程运行结束,发出exit信号时,会关闭或丢弃其资源环境(剩余的部分称为Zombie),同时也会唤醒父进程,父进程会清理剩余的结构,然后继续运行。当父进程终止,子进程也会终止。
4. Linux进程管理工具
pstree :查看进程之间的关系,进程树
- -A :各进程之间的链接以ASCII码字符来链接
- -u :各进程之间的链接用uft-8来链接,若是终端不支持uft-8,则会出现乱码
- -p :列出进程PID
- -u :列出所属账号名称
若是没有此命令运行:
[root@host ~]# yum provides pstree #查找pstree此命令的包
'''
psmisc-22.20-16.el7.x86_64 : Utilities for managing processes on your system
源 :@base
匹配来源:
文件名 :/usr/bin/pstree
[root@host ~]# yum install psmisc #安装此包
'''
[root@host ~]# pstree #同-U,默认
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─VGAuthService
├─agetty
├─atd
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───6*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd─┬─sshd───bash───pstree
│ └─sshd───sftp-server
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─vmtoolsd───{vmtoolsd}
[root@host ~]# pstree -A
systemd-+-NetworkManager-+-dhclient
| `-2*[{NetworkManager}]
|-VGAuthService
|-agetty
|-atd
|-auditd---{auditd}
|-crond
|-dbus-daemon---{dbus-daemon}
|-firewalld---{firewalld}
|-lvmetad
|-master-+-pickup
| `-qmgr
|-polkitd---6*[{polkitd}]
|-rsyslogd---2*[{rsyslogd}]
|-sshd-+-sshd---bash---pstree
| `-sshd---sftp-server
|-systemd-journal
|-systemd-logind
|-systemd-udevd
|-tuned---4*[{tuned}]
`-vmtoolsd---{vmtoolsd}
[root@host ~]# pstree -p
systemd(1)─┬─NetworkManager(6807)─┬─dhclient(8451)
│ ├─{NetworkManag