进程:已启动的可执行程序的运行实例,即运行的程序。
进程与程序的关系:
程序: 静止的代码
程序: 当程序开始被运行(执行)的时候,具有动态、生命周期以及运行状态。
进程生命周期
父进程通过fork()函数可以创建一个子进程,并分配一个新的进程ID号,此时整个的父进程的地址空间是没有被复制,父子进程共享相同的地址空间,exec()函数复制新的程序到子进程的地址空间,内存会分配新的物理内存页给子进程,当程序已经执行完成,子进程通过调用exit()系统调用终止。exit()系统调用释放进程大部分的数据并通过发送一个信号通知其父进程。此时,子进程是一个被叫作僵尸进程的进程。
进程状态
运行状态
此状态具有进程正在运行、进程处于就绪状态两种情况,就绪状态的进程处于预备运行的状态,在等待系统按照时间片轮转规则将CPU分配给他,得到CPU后就会投入运行。
等待状态
进程正在等待某个事件发生或等待某种资源,该状态分为两类:可中断的睡眠状态和不可中断的睡眠状态。处于可中断的等待状态进程,既可以被信号中断,也可以由于资源就绪而被唤醒进入运行状态;而不可中断等待状态只能用wake_up()函数唤醒。
暂停状态
当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。
僵死状态
子进程退出时,父进程并未对其发出的SIGCHLD信号进行适当处理,导致子进程停留在僵死状态等待其父进程为其收尸,这个状态下的子进程就是僵死进程。
-
ps [参数](功能描述:永远显示当前进程的状态) 常用参数: -a: 显示当前终端的所有进程信息 -u: 以用户的格式显示进程信息 -x: 显示后台进程运行的参数 -e: 显示所有进程 -f: 全格式
-
kill [选项] 进程号(功能描述:通过进程号杀死进程) 常用选项 : -9: 强迫进程立即停止
-
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,在系统因负载过大而变得很慢时很有用)
-
pstree [选项](功能描述:所有进程以树状图显示) 常用选项: -p: 显示进程的PID -u: 显示进程的所属用户
服务(Service)管理
服务本质就是进程,但是时运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如mysql、sshd、防火墙等,这样的进程又称为守护进程。
查看服务名:
1.使用 setup 查看系统服务名称
2./etc/init.d文件中查看服务名称
centos7系统服务管理
CentOS7与CentOS6关于服务管理的命令差异比较大。