文章目录
进程的概念与查看
运行在系统中的程序,同时进程可以包含子进程;进程在程序开始运行到结束的整个生命周期都是可以管理的;
- 程序的开始一般是从mian函数开始。
- 程序的终止分为正常终止和异常终止;
*正常终止包含 从main返回 调用exit等- 异常分为abort命令及接收到信号等;例如:系统资源不足,无法为程序分配内存,导致程序终止运行;
2.进程的控制命令
进程一般都是树形的,都有单独的编号PID;
查看命令一般有 ps pstree top命令;
2.1 ps
ps
后无参数 查看当前终端下能够查看的进程状态, 在Ubuntu上执行效果如下:
第一行一般是PID就是进程的唯一标识号,进程的名称是可以重复的,ps -e
查看其他进程,这个能查看很多的进程 ,一般常用ps -ef
,执行后部分截图如下:
这个命令可以查看进程启动的用户身份UID(有效身份ID),PPID 父进程,所有进程的启动都要从父进程启动;如果要查看轻量级进程(线程)执行ps -eLf
就会多一个LWP的项目;- ps aux 以用户为主的进程状态的详细信息
* -A :所有的进程均显示出来,与 -e 具有同样的效用;
* -a : 显示现行终端机下的所有进程,包括其他用户的进程;
* -u :以用户为主的进程状态 ;
* x :通常与 a 这个参数一起使用,可列出较完整信息。
2.2 pstree
pstree 可以查看到进程和进程下所有的子进程以树的形式显示,如图:
后面的more
是进行分页显示;
2.3 top
可以动态去查看进程的信息,可以不用带任何参数;效果如下:
第一行开始是指系统的开机时间 ,users 当前登录的用户 ,接下来是指系统的繁忙程度,1表示繁忙;
tasks 表示进程的总数及其各个运行的状态;即:一个运行,65个休眠,1个停止
下一行的 表示cpu的状态 ,(s)表示平均值,(这时候按数字1就可以查看每一个cpu的状态)wa表示io的繁忙程度;
接下来的表信息,默认每次间隔3s刷新一次;
3. 进程的信号
给一个文件执行权限:
// u 当前用户下 x 可执行权限
chmod u+x file.sh
调整优先级:
nice 范围在-20到19 ,值越小级别越高,抢占资源就越多;
renice 重新设置优先级
指定进程级别启动效果如下:
为了能查看进程的信息我们需要新打开一个终端执行:top -p 24562
,效果如图:
接下来尝试重新调整优先级,执行renice -n 19 24562
后效果如下:
可以看到级别从16调整到了19;
进程前后台的切换
如果需要在后台执行命令那么只需要加上&(shirt+7):
nice -n 16 ./test.sh &
执行效果如下:
执行top命令可以查看程序是不是在运行中:
- 返回前台 就需要 jobs命令,执行后效果:
可以看到这里列出了执行中的命令,要切换那个到前台只需执行fg 序号
,fg是forground的缩写:
可以看到程序切换到前台执行了;
信号是进程间通讯的一种方式,一般常用是终端输入一个中断命令,通过信号机制去停止一个程序的执行;
常用命令:kill -9 pid
;
-9 表示停止进程不受任何阻断的影响
4. 守护进程和系统日志
有时候我们需要程序开机就启动,而不需要我们手动去启动,那么就需要守护进程:nohup
和daemon
nohup表示即使关掉终端程序依然可以运行;执行效果如下:
可以看到这个命令还有一个功能就是:忽略输入并把输出追加到nohup.out文件中;
这时候执行exit命令退出终端,我们执行ps命令查看一下是不是在后台运行:
可以看到程序在运行中
screen环境下执行后的命令即使断开连接后也能运行,执行后重连远程服务后效果:
如果需要查看那些是在screen下执行的只需要加上-ls就可以查看:
可以看到有一个进程在执行;
SELinux 简介
安全增加的Linux版本,以前的访问是依赖用户和文件去访问;有自主(DAC)和强制访问(MAC);注意大部分的服务的这个命令都是处于关闭状态;
可以使用getenforce命令查看,如果提示不错在使用`apt install selinux-utils安装一下;
安装完毕再执行命令后,可以看到是没有启用的;
如果对这个命令使用不熟练反而麻烦,所以很少使用;