要想让进程运行起来,必须要有一个程序。
所以进程:就是一堆的命令+参数+执行的程序
kill (就是干掉进程。让他停止运行)
-1  -HUP    加载服务的配置,主进程不会重新启动,但是子进程会被干掉,重新拉起新的子进程

-9 强制杀死,谨慎使用。(比如我正在往磁盘写数据,然后你强制杀掉了进程,就会导致进程的中断,而导致数据不完整,更可能会导致程序启动不起来)

成为孤儿进程之后,就不能在提供服务了。

-15     正常停止进程信号,如果进程还有任务在处理,那么则处理完成后,进程会自动退出。

pkill  +进程名字     pkill httpd
killall                        killall  httpd
问题:在linux中输入如下命令"(while :; do uptime; sleep 1; done) &" ,新开一个终端查看该进程的状态,并尝试终止该进程。
输入之后,会出现一秒一次的动态进程。不能暂停。也找不到它的pid。所以只能pkill -9  -t pts/0 ,直接把登录终端的用户给强制踢出。
后台进程
通常进程都是在终端的前台运行,但是一旦关闭终端。进程也会随之结束。那么这个时候,我们希望它能在后台运行。达到就算我们退出了终端,他也能正常的运行
(就像qq的最小化。我最小化之后,就把它放在了后台,然后并不影响我在前台做其他的事。)
为啥要把进程放在后台呢?
因为当我们在传输一个大数据的时候,需要时间,而这个时候我们刚好要去吃饭,就可以直接把它放着,但是电脑会在一段时间不用之后,进入到一个休眠的状态,这个时候,会断网而导致进程中断,而导致Linux数据的传输失败。
怎么解决?
例如:查看日志记录tail -f /var/log/messages
古老的办法:tail -f /var/log/messages &     (放在了后台)
jobs     (查看后台作业)
fg 数字    (回到前台)
然后在ctrl +c 退出。
但是这样做,会出现在你登录一个窗口会退出时。会把信息显示到你的前台。
然后出了一个办法:tail -f /var/log/messages &>>/tmp/1.txt &
将执行的后台的结果追加到一个文件中。然后执行。这样不会出现在出现在前台提示。
现在的神器高科技:
screen 原理图()

screen -S wget_mysql (创建一个窗口,指定名称)
进入窗口执行任务,不管是传输还是什么
使用ctrl+a+d (平滑的退出),相当于将窗口挂在了后台。但是如果你使用了exit命令,相当于你退出了窗口,就再也进不去了
screen -list 查看正在运行的screen有哪些
screen -r wget_mysql 或screen -r IP号    重新进去到窗口。
进程的优先级?
就是优先享受资源。比如排队买票的时候,都是老人,军人优先。
为啥要有优先级?
很简单,我需要得到别人不同的待遇。cpu在同一时间只能处理一个任务,而它的任务过多,或者时间过长,我在输入自己想输入的命令时就会排队,比如ssh,进入远程的窗口。那么我如果没有优先待遇,就会很难得到回复。
在启动进程时,为不同的进程使用不同的调度策略。
nice 值越高:表示优先级越低 +19 该进程容易将cpu的使用量让给其他进程先使用
nice 值越低:表示优先级越低 -19 该进程不倾向将cpu的使用让出
低                         正常                 高
+20                        0                    -20
那如何配置进程的优先级?
- nice指定程序的优先级。语法格式 nice -n 优先级数字 进程名称 
 nice -n -5 vim & 直接配置优先级
 ps aux |grep vim 查看优先级
- renice命令修改一个正在运行的进程优先级。语法格式 renice -n 优先级数字 进程pid 
 ps -ef |grep ssh 过滤出自己想要调整的进程
 renice -n -20 26259 修改优先级
 ps axo pid,command,nice |grep ssh 过滤只查看的内容
 退出重新登录,就会使得父进程分配一个优先级。 23750 sshd: root@pts/1 -20 26259 /usr/sbin/sshd -D -20
如何处理假死的现象?

平均负载:
平均负载是指单位时间内,系统处于  可运行状态R   和  不可中断状态D   的平均进程数,也就是平均活跃进程数,
平均负载其实就是单位时间内的活跃进程数。  ( 可运行状态R + 不可中断状态D )
 理想的平均负载?
 每一个cpu上都刚好运行着一个进程,这样每个cpu都得到充分利用。而判定平均负载,首先要知道自己的系统有几个cpu。通过top 1 获取。。也可以grep "model name"/proc/cpuinfo
当你在4,2,1核的cpu上,平均负载如果是2,意味着?
在4个cpu系统上,意味着有百分之五十点空闲
在2个cpu系统上,意味着有百分之百的刚好完全占用
在1个cpu系统上,意味着有一半的进程竞争不到cpu,导致电脑卡
怎么看平均负载?
要三个值一起看
1.如果三个值相差不大,证明没问题
2.如果1分钟的值远小于15分钟。 证明负载在减小
3.如果1分钟的值远大于15分钟。证明负载在这个时候突然上升
也可以通过计算的方法:

出现负载之后的检查流程:
1.uptime看看负载的情况   (  超过了 cpu的核心  )
2.top看是cpu的使用率高  还是  wa等待高  还是内核态占用cpu高 、软中断高 、nice优先级进程占用cpu、
3.top看是哪个进程
4.追踪这个进程的情况。
5.看看是否存在异常日志。
平均负载和cpu的使用率有啥关系
CPU 密集型进程,使用大量 CPU 计算会导致平均负载升高,此时这两者是一致的;  ( 视频的转码  加密  计算圆周率 )
I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高; wa
大量的 CPU 进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
cpu密集进程,用户进程飙升。
[root@fanxiaolei ~]# stress  --cpu 1 --timeout 600   (模拟大量用户进程访问,造成us飙升)
然后通过top查看。
watch -d uptime    (如果负载过高,会高亮显示)
mpstat   -P ALL 5  (查看cpu的使用率变化情况)
(表示监控所有cpu,数字5是,5秒输出一组数据)
pidstat -u 5 1  (查看哪个进程导致的cpu使用率高)
I/O 密集型进程
[root@fanxiaolei ~]# stress  --io 1 --timeout 600
大量的cpu 进程的调度
[root@fanxiaolei ~]# stress  -c 4  --timeout 600