CentOS 7 Linux 学习笔记 (8)
CentOS 7 下的进程(以及程序相关的)操作:
常见命令:
ps -ef —— 查看系统中的一些进程
ps -ef | grep firewalld —— 查看进程中跟firewalld相关的进程
firewalld是CentOS 7 中新增加的。,用来替换防火墙的
| 称为管道符,可以隔开不同的操作,而且 : 可以把 管道符 | 前面命令的输出作为管道符 | 后面命令的输入
which firewalld —— 查看wirewalld到底涉及哪些可执行的程序
kill 7319 —— 停止一个进程,如果我们知道它的ID,可以用kill命令
如果停止不了,可以进行强制删除/停止这个进程,输入指令:kill -9 7319
如果进程很多,可以输入指令:ps -ef | more 进行分页显示,空格切换下一页,q则退出
man ps —— 查看更多关于 ps 的参数,q退出 (man用于查看命令)
man ls —— (同理)查看更多关于 ls 的参数
写一个进程的脚本(通过命令放在前台或者后台去运行) (脚本的后缀名一般为:.sh)
vi a.sh:
开始写脚本:(第一行:说明这是什么类型的脚本,在运行的时候会用到哪一个shell,这里是bash类型的脚本)
(第二行:sleep 是休眠的意思,这里是休眠1000秒)
(第三行:echo 是打印的意思)
然后,执行脚本:./ ( ./ 代表当前目录)
操作不了了,是因为这样执行脚本a.sh的话会占用当前的终端,然后就会卡住,无法操作。可以使用ctrl + c 强制退出。
然后查看a.sh是否运行了,查看进程:
ps -ef | grep a.sh
发现没有运行。(出现的这个进程是运行命令ps -ef | grep a.sh的进程)
然后,把这个脚本放在后台来运行: ./a.sh &
可以看到是有运行的。
(前台进程是指占用当前终端的进程)
输入指令:jobs ,来查看当前运行的有哪些进程,但是不包括系统进程(ps -ef 命令是包括系统进程的)
把后台进程切换成前台进程:
输入指令:fg %1 (%后面的数字1对应上面进程的进程号)
可以看到,它会占用当前的终端(因为卡住了)
如何把当前占用终端的前台进程放到后台,
输入Ctrl+z,使其停止,然后输入:jobs 来查看,可以看到该进程已经北方入到后台了,而且被暂停了,可以重新让它运行。
可以重新让它运行,输入指令如下:
ps -ef | grep a.sh 先查看该进程,
kill -cont 13332 继续这个进程,jobs进行查看:
想暂停这个进程:
输入指令:kill -stop 13332 ,暂停这个进程(暂停的进程并没有退出内存,还是在内存当中的)
想要中断这个进程:
输入指令:kill 13332(ID号) 或,输入指令:pkill a.sh (pkill加名称)
实操时:
./a.sh —— 运行该脚本(且会造成阻塞)
此时,Ctrl+c —— 会使该进程直接终端(终止),
而Ctrl+z —— 会使该进程处于stopped状态。
在进程处于Running 状态时,输入:kill -stop 进程ID —— 使得进程处于stopped 状态
(有时候)
在进程处于stopped状态时,输入:kill -cont 进程ID —— 使得进程处于Running 状态
但是输入:pkill a.sh(进程名) —— 并不会终止进程(Terminated)
而是,当进程处于Running 状态时,输入:pkill a.sh —— 会终止进程(Terminated)