什么是进程?(process)
在linux系统当中:触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。
程序(program):通常为二进制程序,放置在存储媒介中(如硬盘、光盘、软盘、磁带等)
进程(process):程序被触发后,执行者的权限与属性、程序的代码与所需的数据等都会被加载到内存中,操作系统给予这个内存中的单元一个标识符(PID),可以说进程就是一个正在运行中的程序。
1、ps命令
格式:ps [参数]
功能:ps命令主要用于查看系统的进程
常用选项:
-a:显示当前控制终端的进程(包含其他用户的)
-u:显示进程的用户名和启动时间等信息
-w:宽行输出,不截取输出中的命令行
-l:按长格形式显示输出
-x:显示没有控制的终端进程
-e:显示所有的进程
-t n:显示第n个终端进程
其他选项:
-ef:查看系统所有进程
aux:查看系统所有进程
axo [选项]:显示你想看见的输出内容
USER: 进程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行行程的状态:
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不不存在但暂时无法消除
W: 没有足够的记忆体分页可分配 <: 高优先序的行程
N: 低优先序的行行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
[root@vlnx0079138 ~]# ps -l
父进程bash——PID1201创建的子进程bash——PID1226,PPID看见它的父进程,CMD:程序名
[root@vlnx0079138 ~]# ps -ef
[root@vlnx0079138 ~]# ps -axu
[root@vlnx0079138 ~]# ps axo pid,priority,%mem,command --sort=%mem {%mem(升序) -%mem(降序)}
2、top命令
格式:top[参数]
功能:显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
常用选项:
-l:<时间>:设置间隔时间
-u:<用户名>:指定用户
-p:<进程号>:指定进程
-n:<次数>:循环显示的次数
第一行:表示项目依次为当前时间、系统运行时间、当前系统登录用户数目、1/5/15分钟系统平均负载(一般来说,这个负载值应该不太可能超过1才对,除非您的系统很忙碌。如果持续高于5的话,那么仔细的看看到底是哪个程序在影响整体系统。)
第二行:显示所有启动的进程、目前运行、挂起(Sleeping)的和僵尸(Zombie)的进程。(stop模式:与sleep会主动放弃cpu,而stop是被动放弃cpu,stop(暂停)的进程是无法自己回到运行状态的)
第三行:显示的是目前CPU的使用的情况,包括us用户空间占用CPU百分比、sy内核空间占用CPU百分比、ni用户进程空间内改变过优先级的进程占用CPU百分比(中断处理占用)、id空闲CPU百分比、wa等待输入输出的CPU时间百分比
第四行:显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、 缓冲区占用的内存
第五行:显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存 的大小。
第六行:显示的项目最多,下面列出了详细解释。
PID(Process ID):进程标示号 ( 每个 process 的 ID )
USER:进程所有者的用户名 ( 该 process 所属的使用者 )
PR:进程的优先级别 ( Priority 的简写,程序的优先执行顺序,越小越早被执行 )
NI:进程的优先级别数值 ( Nice 的简写,与 Priority 有关,也是越小越早被执行 )
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间 ( CPU 使用时间的累加 )
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行
ps工具标识进程的5种状态码:
D不可中断 uninterruptible sleep (usually IO)
R运行runnable (on run queue)
S中断 sleeping
T 停止 traced or stopped
Z僵死 a defunct (”zombie”) proce
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
1:显示CPU
f:标记,按完空格是确定,方向键控制上下,Esc退出
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
h:top帮助
可以看到,top命令是⼀一个功能十分强大的监控系统的工具,对于系统管理理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。
使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面。
信号控制进程
3、kill命令
SIGKILL 9 强制关闭
SIGTERM 15 正常关闭
格式:kill [参数][进程号]
功能:发送指定的信号到相应的进程
常用的选线:
-l:如果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称。
-a:当处理当前进程时,不限制命令名和进程号的对应关系
-p:指定kill命令只能打印相关的进程号,而不发送任何信号
-s:指定发送信号
-u:指定用户
例如:kill -s SIGTERM PID (先使用ps找到PID,然后使用kill,kill默认是15,正常关闭)
kill -s SIGTERM 4096 正常关闭4096
kill -15 PID
kill -15 4096 /kill -9 4096 (正常关闭4096/强制关闭4096)
4、pkill 命令
格式:pkill [参数][条件]
功能:搜索杀死
常用的选线:
-p:搜索杀死
例如:pkill -u tony (搜索tony用户的进程将其杀死)
5、at 命令 (安装at包)
格式:at [参数][时间]
功能:在指定时间运行指定的命令(只运行一次)(at编程后按Ctrl+D组合键退出)
常用的选线:
-f:文件名,从指定文件而非标准输入设备获取将要执行的命令
-l:显示等待执行的调度作业
-d:删除指定的调度作业
5、crontab 命令
格式:crontab -e ; crontab [-u user] file ; crontab [-u user] [-e | -l | -r]
功能:通过crontab命令,我们可以在固定的间隔时间执行指定的系统指令或shell脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上任何组合。这个命令非常适合周期性的日志分析或数据备份等工作。
常用的选线:
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般由root用户来运行。
file:file是命令文件的名字,表示将file作为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)输入的命令,并将他们载入crontab。
-e:编辑某个用户的crontab文件内容,如果不指定用户,则表示编辑当前用户的crontad文件内容。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前的用户的crontab文件。
-i:在删除用户的crontab文件时给出确认的提示。
在配置文件中显示时间表的格式:f1 f2 f3 f4 f5 [命令]
f1位为分钟;f2位为小时;f3位为一个月的第几天;f4位为月;f5位为本天是周几
分钟(0-59) 小时(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用户名 要执行的命令
每隔30分钟root执行一次updatedb命令:
*/30 * * * * root updatedb
每天早上5点定时重启系统:
0 5 * * * root reboot
例如:每1分钟执行执行一次ll
[root@vlnx0079138 ~]#crontab -e
进去添加
* * * * * ll (使用wq保存退出)
[root@vlnx0079138 ~]#systemctl enable crond 开机自启
[root@vlnx0079138 ~]#systemctl start crond 启动服务
使用crontab跑定时作业,发现邮箱里面有很多垃圾邮件,想要全部删除可以这样做
yum install mailx -y 安装之后使用mail直接查看邮件 (使用重定向:a、有用的,使用固定文件保存b、无用的,放黑洞里)
使用crontab -e进去在里面补上个MAILTO=’ ’ 就可以不现实邮件了
crontab -e ||||-e 创建 查使用 man 5 crontonal
出现一个编辑键,每行都可以编写输出