1.Linux ps命令:查看正在运行的进程
ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。
ps 命令的基本格式如下:
[[email protected] ~]# ps aux #查看系统中所有的进程,使用 BS 操作系统格式 [[email protected] ~]# ps -le #查看系统中所有的进程,使用 Linux 标准命令格式
选项:
a:显示一个终端的所有进程,除会话引线外;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
-l:长格式显示更加详细的信息;
-e:显示所有进程;
可以看到,ps 命令有些与众不同,它的部分选项不能加入"-",比如命令"ps aux",其中"aux"是选项,但是前面不能带“-”。
下面是一些常用的选项,大家可以记一下:
"ps aux" 可以查看系统中所有的进程; "ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级; "ps -l" 只能看到当前 Shell 产生的进程;
实例一:
表 1 中罗列出了以上输出信息中各列的具体含义。
实例二:
"ps -le"命令也能看到系统中所有的进程。由于 "-l" 选项的作用,所以 "ps -le" 命令能够看到更加详细的信息。
[[email protected] ~]# ps -le F S UID PID PPID C PRI Nl ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 - 718 - ? 00:00:02 init 1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd 1 S 0 3 2 0 -40 - - 0 - ? 00:00:00 migration/0 1 S 0 4 2 0 80 0 - 0 - ? 00:00:00 ksoflirqd/0 1 S 0 5 2 0 -40 - - 0 - ? 00:00:00 migration/0 …省略部分输出…
表 2 罗列出以上输出信息中各列的含义。
2.Linux top命令:持续监听进程运行状态
top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。
top 命令的基本格式如下:
[[email protected] ~]#top [选项]
1)选项:
-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
-b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
-n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
-p 进程PID:仅查看指定 ID 的进程;
-s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
-u 用户名:只监听某个用户的进程;
2)在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:
? 或 h:显示交互模式的帮助;
P:按照 CPU 的使用率排序,默认就是此选项;
M:按照内存的使用率排序;
N:按照 PID 排序;
T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
r:按照 PID 给某个进程重设优先级(Nice)值;
q:退出 top 命令;
3)实例:
3.Linux pstree命令:查看进程树
pstree 命令是以树形结构显示程序和进程之间的关系,此命令的基本格式如下:
[[email protected] ~]# pstree [选项] [PID或用户名]
表 1 罗列出了 pstree 命令常用选项以及各自的含义。
需要注意的是,在使用 pstree 命令时,如果不指定进程的 PID 号,也不指定用户名称,则会以 init 进程为根进程,显示系统中所有程序和进程的信息;
反之,若指定 PID 号或用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。
init 进程是系统启动的第一个进程,进程的 PID 是 1,也是系统中所有进程的父进程。
4.Linux lsof命令:列出进程调用或打开的文件信息
lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
lsof 命令的基本格式如下:
[[email protected] ~]# lsof [选项]
此命令常用的选项及功能,如表 1 所示。
5.Linux进程优先级
在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice。
其中,PRI 代表 Priority,NI 代表 Nice。这两个值都表示优先级,数值越小代表该进程越优先被 CPU 处理。不过,PRI值是由内核动态调整的,用户不能直接修改。所以我们只能通过修改 NI 值来影响 PRI 值,间接地调整进程优先级。
PRI 和 NI 的关系如下:
PRI (最终值) = PRI (原始值) + NI
其实,大家只需要记得,我们修改 NI 的值就可以改变进程的优先级即可。NI 值越小,进程的 PRI 就会降低,该进程就越优先被 CPU 处理;反之,NI 值越大,进程的 PRI 值就会増加,该进程就越靠后被 CPU 处理。
修改 NI 值时有几个注意事项:
NI 范围是 -20~19。
普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。
6.Linux nice和renice命令:改变进程优先级
1)nice命令
nice 命令可以给要启动的进程赋予 NI 值,但是不能修改已运行进程的 NI 值。
nice 命令格式如下:
[[email protected] ~] # nice [-n NI值] 命令
-n NI值:给命令赋予 NI 值,该值的范围为 -20~19;
2)renice 命令
同 nice 命令恰恰相反,renice 命令可以在进程运行时修改其 NI 值,从而调整优先级。
renice 命令格式如下:
[[email protected] ~] # renice [优先级] PID
注意,此命令中使用的是进程的 PID 号,因此常与 ps 等命令配合使用。
7.Linux kill命令:终止进程
kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
kill 命令的基本格式如下:
[[email protected] ~]# kill [信号] PID
这里仅列出几个常用的信号,如表 1 所示。
需要注意的是,表中省略了各个信号名称的前缀 SIG,也就是说,SIGTERM 和 TERM 这两种写法都对,kill 命令都可以理解。
8.Linux kill命令:终止进程
Linux 命令放入后台的方法有两种,分别介绍如下。
1)"命令 &",把命令放入后台执行
第一种把命令放入后台的方法是在命令后面加入 空格 &。使用这种方法放入后台的命令,在后台处于执行状态。
注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。
2)命令执行过裎中按 Ctrl+Z 快捷键,命令在后台处于暂停状态
9.Linux jobs命令:查看当前终端放入后台的工作
jobs 命令可以用来查看当前终端放入后台的工作,工作管理的名字也来源于 jobs 命令。
jobs 命令的基本格式如下:
[[email protected] ~]#jobs [选项]
表 1 罗列了 jobs 命令常用的选项及含义。
实例:
[[email protected] ~]#jobs -l [1]- 2023 Stopped top [2]+ 2034 Stopped tar -zcf etc.tar.gz /etc
可以看到,当前终端有两个后台工作:一个是 top 命令,工作号为 1,状态是暂停,标志是"-";另一个是 tar 命令,工作号为 2,状态是暂停,标志是"+"。
"+"号代表最近一个放入后台的工作,也是工作恢复时默认恢复的工作。"-"号代表倒数第二个放入后台的工作,而第三个以后的工作就没有"+-"标志了。
一旦当前的默认工作处理完成,则带减号的工作就会自动成为新的默认工作,换句话说,不管此时有多少正在运行的工作,任何时间都会有且仅有一个带加号的工作和一个带减号的工作。
10.Linux fg命令:把后台命令恢复在前台执行
fg 命令用于把后台工作恢复到前台执行,该命令的基本格式如下:
[[email protected] ~]#fg %工作号
注意,在使用此命令时,% 可以省略,但若将% 工作号全部省略,则此命令会将带有 + 号的工作恢复到前台。另外,使用此命令的过程中, % 可有可无。
11.Linux bg命令:把后台暂停的工作恢复到后台执行
前面讲过,使用 Ctrl+Z 快捷键的方式,可以将前台工作放入后台,但是会处于暂停状态,那么,有没有办法可以让后台工作继续在后台执行呢?答案是肯定的,这就需要用到 bg 命令。
bg 命令的基本格式如下:
[[email protected] ~]# bg %工作号
和 fg 命令类似,这里的 % 可以省略。
12.Linux at命令:定时执行任务
要想使用 at 命令,需提前安装好 at 软件包,并开启 atd 服务。
除此之外,at 命令要想正确执行,还需要 atd 服务的支持。atd 服务是独立的服务,启动的命令如下:
[[email protected] ~]# service atd start # 正在启动 atd: [确定]
at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,具体规则如下:
1.如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
2.如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
3.如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。
系统中默认只有 /etc/at.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用 at 命令。不过,如果我们打算控制用户的 at 命令权限,那么只需把用户写入 /etc/at.deny 文件即可。
at 命令的格式非常简单,基本格式如下:
[[email protected] ~] # at [选项] [时间]
有关此命令常用的几个选项及各自含义如表 1 所示。
另外,表 2 罗列了此命令中关于时间参数可用的以下格式。
实例:
[[email protected] ~J# at 02:00 2013-07-26 at> /bin/sync at> /sbin/shutdown -h now at> <EOT> job 9 at 2013-07-26 02:00 #在指定的时间关机。在一个at任务中是可以执行多个系统命令的
在使用系统定时任务时,不论执行的是系统命令还是 Shell 脚本,最好使用绝对路径来写命令,这样不容易报错。at 任务一旦使用 Ctrl+D 快捷键保存,实际上写入了 /var/spool/at/ 这个目录,这个目录内的文件可以直接被 atd 服务调用和执行。
1)atq 命令用于查看当前等待运行的工作
[[email protected] ~]# atq 9 2013-07-26 02:00 a root #说明root用户有一个at任务在2013年7月26日02:00执行,工作号是9 [[email protected] ~]# atrm [工作号] #删除指定的at任务
2)atrm 命令用于删除指定的工作
[[email protected] ~]# atrm 9 [[email protected] ~]# atq #删除9号at任务,再查询就没有at任务存在了
13.Linux crontab命令:循环执行定时任务
crontab 命令需要 crond 服务支持。crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似。
执行crontab命令之前先开启crond服务。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。
该命令和 at 命令类似,也是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。而且原则也非常相似:
1.当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高。
2.当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令。
3.这个规则基本和 at 命令的规则一致,同样是 /etc/cron.allow 文件比 /etc/cron.deny 文件的优先级高,Linux 系统中默认只有 /etc/cron.deny 文件。
每个用户都可以实现自己的 crontab 定时任务,只需使用这个用户身份执行“crontab -e”命令即可。当然,这个用户不能写入 /etc/cron.deny 文件。
crontab 命令的基本格式如下:
[[email protected] ~]# crontab [选项] [file]
这里的 file 指的是命令文件的名字,表示将 file 作为 crontab 的任务列表文件并载入 crontab,若在命令行中未指定文件名,则此命令将接受标准输入(键盘)上键入的命令,并将它们键入 crontab。
与此同时,表 1 罗列出了此命令常用的选项及功能。
其实 crontab 定时任务非常简单,只需执行“crontab -e”命令,然后输入想要定时执行的任务即可。不过,当我们执行“crontab -e”命令时,打开的是一个空文件,而且操作方法和 Vim 是一致的。那么,这个文件的格式才是我们真正需要学习的内容。文件格式如下:
[[email protected] !]# crontab -e #进入 crontab 编辑界面。会打开Vim编辑你的任务 * * * * * 执行的任务
这个文件中是通过 5 个“*”来确定命令或任务的执行时间的,这 5 个“*”的具体含义如表 2 所示。
在时间表示中,还有一些特殊符号需要学习,如表 3 所示。
当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。
而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。知道了这 5 个时间字段的含义,我们多举几个时间的例子来熟悉一下时间字段,如表 4 所示。
在书写 crontab 定时任务时,需要注意以下几个事项:
1.6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
2.crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
3.在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
4.在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。
实例:
在每月 1 日、10 日、15 日的凌晨 3 点 30 分都定时执行日志备份脚本
[[email protected] ~]# crontab -e 30.3 1,10,15 * * /root/sh/autobak.sh
14.独立服务的启动管理
1) 使用/etc/init.d/目录中的启动脚本来启动独立的服务
既然所有独立服务的启动脚本都存放在 /etc/init.d/ 目录中,那么,调用这些脚本就可以启动独立的服务了。这种启动方式是推荐启动方式,命令格式如下:
[[email protected] ~]#/etc/init.d独立服务名 start| stop|status|restart|...
参数:
start:启动服务;
stop:停止服务;
status:查看服务状态;
restart:重启动服务;
2) 使用service命令来启动独立的服务
在 CentOS 系统中,我们还可以依赖 service 命令来启动独立的服务。service 命令实际上只是一个脚本,这个脚本仍然需要调用 /etc/init.d/ 中的启动脚本来启动独立的服务。而且 service 命令是红帽系列 Linux 的专有命令,其他的 Linux 发行版本不一定拥有这条命令,所以我们并不推荐使用 service 命令来启动独立的服务。
service 命令格式如下:
[[email protected] ~]# service 独立服务名 start|stop|restart|...
--status -all:列出所有独立服务的启动状态
原文地址:https://www.cnblogs.com/xiaojiang0414/p/12586793.html