一、什么是程序?
-
文件中静态保存的代码
-
是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
-
用于描述进程要完成的功能,是控制进程执行的指令集。
-
保存在硬盘、光盘等介质中的可执行代码和数据。
二、什么是进程
-
运行的程序在内存中的叫进程
-
电脑用pid来识别进程;程序运行,系统自动分配pid
-
存在生命周期
-
都由其父进程创建
三、进程具有的特征
-
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
-
并发性:任何进程都可以同其他进程一起并发执行;
-
独立性:进程是系统进行资源分配和调度的一个独立单位;
-
结构性:进程由程序、数据和进程控制块三部分组成。
四、进程的基本状态
-
创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态;
-
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行;
-
执行状态:进程处于就绪状态被调度后,进程进入执行状态;
-
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用;
-
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行。
五、进程的状态
-
运行态:running
-
就绪态:ready
-
睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable;
-
停止态:stopped,暂停于内存,但不会被调度,除非手动启动;
-
僵尸态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵尸态 的子进程。
六、什么是线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。因此在80年代,出现了能独立运行的基本单位——线程(Threads)。
查看进程有几个线程,可以使用 "cat /proc/PID/status"查看。
七、进程和线程的区别
-
线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
-
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
-
调度和切换:线程上下文切换比进程上下文切换要快得多;
-
程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
-
同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的;
-
一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。
八、僵尸进程
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源。
在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由init 来接管他,成为他的父进程。
示例:
九、查看进程信息
1.ps命令:查看静态进程统计信息
ps 命令是 Process Status 的缩写 ,可以查看进程当前状态的快照。查看静态的进程统计信息,即执行 ps 命令的那个时刻的进程快照。默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/PID 目录下的各文件中。
常用选项:
-
a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
-
u:使用以用户为主的格式输出进程信息。
-
x:显示当前用户在所有终端下的进程信息。
-
-e:显示系统内的所有进程信息。
-
-l:使用长(Long)格式显示进程信息。
-
-f:使用完整的(Full)格式显示进程信息。
-
k|--sort 属性:对属性排序,属性前加 - 表示降序排列。
ps命令支持三种语法格式:
-
UNIX风格。选项可以组合在一起,并且选项前必须有 "-" 连字符 。如:ps -ef。
-
GNU选项。选项前有两个 "-" 连字符 。如:ps --help。
-
BSD选项。选项可以组合在一起,但是选项前不能有 "-" 连字符。如:ps aux。
我们常用的是BSD选项,这个一般看个人选择。
查看静态进程统计信息命令:ps aux
-
a:显示终端上的所有进程,包括其它用户的进程
-
u:表示列出进程的用户名
-
x:显示所有终端的进程
示例:
进程信息共有11个字段,每个字段含义如下:
表头(列名) | 含义 | 重点 |
---|---|---|
USER | 进程的用户 | |
PID | 进程的id号 | |
%CPU | 进程占用CPU百分比 | * |
%MEM | 进程占用内存百分比 | * |
VSZ | 该进程使用的虚拟内存量(KB) | |
RSS | 该进程占用的物理内存量(KB) | |
TTY | 启动进程终端名 | |
STAT | 该进程的状态 | * |
START | 该进程启动时间 | |
TIME | 该进程实际使用CPU运行的时间 | |
COMMAND | 进程启用的命令 |
STAT进程的状态:
-
D:不可中断的休眠状态
-
S:处于休眠状态,可被唤醒
-
R:正在运行状态
-
T:停止状态,可能是在后台暂停或进程处于跟踪调试状态
-
Z:僵尸进程,进程已经终止,但部分程序还在内存当中
查看静态进程统计信息命令:ps -elf
-
-e:显示系统内的所有进程信息
-
-l:使用长格式显示进程信息
-
-f:使用完整的格式显示进程信息
示例:
进程信息共有14个字段,每个字段含义如下:
表头(列名) | 含义 |
---|---|
F | 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行; 4:进程使用超级用户权限; |
S | 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致; |
UID | 运行此进程的用户的 ID; |
PID | 进程的 ID; |
PPID | 父进程的 ID; |
C | 该进程的 CPU 使用率,单位是百分比; |
PRI | 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改 |
NI | 进程的优先级,数值越小,该进程越早被执行;可以人为修改,数值范围:-20~19 |
ADDR | 该进程在内存的哪个位置; |
SZ | 该进程占用多大内存; |
WCHAN | 该进程是否运行。"-"代表正在运行; |
TTY | 该进程由哪个终端产生; |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间; |
CMD | 产生此进程的命令名; |
如果不想看到所有的进程,只想查看一下当前登录的终端产生了哪些进程,那只需使用 "ps -l" 命令就足够了。
自定义显示字段(查看进程的特定属性):
1)ps axo 列名,列名,列名,列名
1)ps -eo 列名,列名,列名,列名
进程排序:
1)按CPU占比升序排列:ps aux --sort=%cpu。
2)按内存占比降序排列:ps aux --sort=-%mem。
特殊示例:找到未知进程的执行程序文件路径
准备:未知进程的执行程序文件
1.查找静态进程信息,CPU倒序,只显示前十行。
2.通过PID号,切换到未知进程所在的文件夹
3.找到exe文件夹,未知进程的绝对路径就在其中。
4.确定未知进程的执行程序文件路径是否有用,若无用,则删除未知进程的执行程序文件路径,并在相同路径下建立一个相同名称的文件。(这也是预防电脑病毒的方法)
注意: 查看指定进程信息用prtstat命令
prtstat命令格式:prtstat [-r] PID
2.top命令:查看动态进程统计信息
ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。
为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态
命令的输出主要分为两部分:
-
第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的。
-
第二部分从第六行开始,显示的是系统中进程的信息。
top命令输出内容——第一部分详解
第一部分是前五行,显示的是整个系统的资源使用状况。
1)第一行是任务队列信息:top - 15:21:57 up 1:20, 2 users, load average: 0.03, 0.02, 0.05
-
15:21:57:系统当前时间
-
up 1:20:系统的运行时间。本机己经运行了一个小时20分钟
-
2 users:当前登录了两个用户
-
load average: 0.03, 0.02, 0.05:系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)。
2)第二行是进程信息:Tasks: 152 total, 1 running, 151 sleeping, 0 stopped, 0 zombie
-
152 total:系统中的进程总数
-
1 running:正在运行的进程数
-
151 sleeping:睡眠的进程数
-
0 stopped:停止(暂停)的进程数
-
0 zombie:僵尸进程数。如果不是 0,则需要手工检查僵尸进程。
3)第三行是 CPU 信息:%Cpu(s): 0.2 us,0.0 sy,0.0 ni,99.8 id,0.0 wa,0.0 hi, 0.0 si, 0.0 st
内 容 | 说 明 |
---|---|
0.2 us | 用户模式占用的 CPU 百分比 |
0.0 sy, | 系统模式占用的 CPU 百分比 |
0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比 |
99.8 id | 空闲 CPU 占用的 CPU 百分比 |
0.0 wa | 等待输入/输出的进程占用的 CPU 百分比 |
0.0 hi | 硬中断请求服务占用的 CPU 百分比 |
0.0 si | 软中断请求服务占用的 CPU 百分比 |
0.0 st | st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
4)第四行是物理内存信息:KiB Mem :1867048 total,1154048 free,299880 used,413120 buff/cache
-
1867024 total : 物理内存的总量,单位为KB
-
1243576 free:空闲的物理内存数量
-
255592 used:已使用的物理内存数量
-
367856 buff/cache:作为缓冲的内存数量
5)第五行是交换分区(swap)信息:KiB Swap: 3907580 total, 3907580 free, 0 used. 1363728 avail Mem
-
3907580 total:交换分区(虚拟内存)的总大小,单位KB
-
3907580 free:空闲交换分区的大小
-
0 used.:已使用的交换分区的大小
-
1363728 avail Mem:可用于进程下一次分配的物理内存数量
top命令输出内容——第二部分详解
top 命令的第二部分输出,主要是系统进程信息,各个字段的含义如下:
表头(字段名) | 说明 |
---|---|
PID | 进程的 ID号 |
USER | 该进程所属的用户 |
PR | priority优先级,数值越小 优先级越高 |
NI | nice优先级,数值越小 优先级越高 |
VIRT | 该进程使用的虚拟内存的大小,单位为 KB |
RES | 该进程使用的物理内存的大小,单位为 KB |
SHR | 共享内存大小,单位为 KB |
S | 进程状态 |
%CPU | 该进程占用 CPU 的百分比 |
%MEM | 该进程占用内存的百分比 |
TIME+ | 该进程总共占用的 CPU 时间 |
COMMAND | 进程的命令名(进程文件、进程名称) |
tty终端:
-
Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换;
-
pts说明是用远程工具连接的,比如xshell,后面的数字代表登录的时间顺序,越小证明登录的越早;
-
查看线程 top -H;ps -T。
常用命令:
命令 | 说明 |
---|---|
P | 以占据的CPU百分比,%CPU |
M | 占据内存百分比,%MEM |
T | 累积占据CPU时长,TIME+ |
l | uptime信息 |
t | tasks及cpu信息 |
m | memory信息 |
q | 退出命令 |
s | 修改刷新时间间隔 |
k | 终止指定进程 |
W | 保存文件 |
1(数字) | cpu分别显示 |
3.pgrep命令:查询进程的PID
根据特定条件查询进程的PID信息。
-
-U:指定用户
-
-l:显示进程名
-
-a:显示完整格式的进程名
-
-P < PID>:显示指定进程的子进程
示例:
1)查询指定用户
2)显示进程名
3)显示完整格式的进程名
注意:已知程序名不知道pid号的情况下,可以用pidof命令查找pid号。
4.pstree命令:进程命令树
pstree命令格式:pstree [选项] PID 用户名
常用选项: -a:显示启动每个进程对应的完整指令,包括启动进程的路径、参数等;
-p:显示PID;
-T:不显示线程thread,默认显示线程;
-u:显示用户切换;
-H:pid 高亮显示指定进程及其前辈进程。
5.lsof命令:列举被系统打开的文件
“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
**lsof命令格式:**lsof [选项]
常用选项:
选项 | 功能 |
---|---|
-c 字符串 | 只列出以字符串开头的进程打开的文件。 |
+d 目录名 | 列出某个目录中所有被进程调用的文件。 |
-u 用户名 | 只列出某个用户的进程打开的文件。 |
-p pid | 列出某个 PID 进程打开的文件。 |
示例:
1)查询打开/bin/bash文件的所有进程
2)查询pid号为705进程打开的所有文件
3)查询nobody用户打开的所有文件
6.vmstat命令:监控系统资源
vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。
vmstat命令格式一:vmstat [-a] [刷新延时 刷新次数]
查询出的信息共分6段,下面是具体说明:
字段 | 含义 |
---|---|
procs | 进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙。 -b:不可被唤醒的进程数量,数量越大,系统越繁忙。 |
memory | 内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。 -buff:缓冲的内存容量,单位为 KB。 -cache:缓存的内存容量,单位为 KB。 |
swap | 交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB。 -so:从内存中交换到磁盘中数据的数量,单位为 KB。 这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。 |
io | 磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块。 -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。 |
system | 系统信息字段: -in:每秒被中断的进程次数。 -cs:每秒进行的事件切换次数。 这两个数越大,代表系统与接口设备的通信越繁忙。 |
cpu | CPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比 |
通过分析 vmstat 命令的执行结果,可以获得一些与当前 Linux 运行性能相关的信息。比如说:
-
r 列表示运行和等待 CPU 时间片的进程数,如果这个值长期大于系统 CPU 的个数,就说明 CPU 不足,需要增加 CPU。
-
swpd 列表示切换到内存交换区的内存数量(以 kB 为单位)。如果 swpd 的值不为 0,或者比较大,而且 si、so 的值长期为 0,那么这种情况下一般不用担心,不用影响系统性能。
-
cache 列表示缓存的内存数量,一般作为文件系统缓存,频繁访问的文件都会被缓存。如果缓存值较大,就说明缓存的文件数较多,如果此时 I/O 中 bi 比较小,就表明文件系统效率比较好。
-
一般情况下,si(数据由硬盘调入内存)、so(数据由内存调入硬盘) 的值都为 0,如果 si、so 的值长期不为 0,则表示系统内存不足,需要增加系统内存。
-
如果 bi+bo 的参考值为 1000 甚至超过 1000,而且 wa 值较大,则表示系统磁盘 I/O 有问题,应该考虑提高磁盘的读写性能。
-
输出结果中,CPU 项显示了 CPU 的使用状态,其中当 us 列的值较高时,说明用户进程消耗的 CPU 时间多,如果其长期大于 50%,就需要考虑优化程序或算法;sy 列的值较高时,说明内核消耗的 CPU 资源较多。通常情况下,us+sy 的参考值为 80%,如果其值大于 80%,则表明可能存在 CPU 资源不足的情况。
总的来说,vmstat 命令的输出结果中,我们应该重点注意 procs 项中 r 列的值,以及 CPU 项中 us 列、sy 列和 id 列的值。
vmstat命令格式二:vmstat [选项]
常用选项:
选项 | 含义 |
---|---|
-f | 显示从启动到目前为止,系统复制(fork)的程序数。此信息是从 /proc/stat 中的 processes 字段中取得的。 |
-s | 将从启动到目前为止,由一些事件导致的内存变化情况列表说明。这些信息的分别来自于/proc/meminfo,/proc/stat和/proc/vmstat。 |
-S 单位 | 令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。 |
-d | 列出硬盘有关读写总量的统计表。 |
-p 分区设备文件名 | 查看硬盘分区的读写情况。 |
示例:
十、启动进程
1.手工启动
-
前台启动:用户输入命令,直接执行程序
-
后台启动:在命令行尾加入"&"符号
2.调度启动
-
使用at 命令,设置一次性计划任务
-
使用crontab命令,设置周期性计划任务
3.进程的前后台调度
-
ctrl+z组合键:将当前进程挂起,即调入后台并停止执行。
-
jobs 命令:查看后台任务列表
-
bg 命令:继续运行后台命令
-
fg 命令:将后台程序调回前台
示例:
十一、结束进程
1.kill命令
kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
kill命令格式:kill [信号] PID
常用信号:
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。键盘退出使用 "Ctrl+\ "。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
18 | CONT | 继续。 |
19 | STOP | 暂停。 |
示例:
2.killall命令
killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。
killall命令格式:killall [选项] [信号] 进程名
常用选项:
-
-i:交互式,询问是否要杀死某个进程。
-
-I:忽略进程名的大小写。
3.pkill命令
根据特定条件终止相应的进程
常用命令选项:
- -U:根据进程所属的用户名终止相应进程
- -t:根据进程所在的终端终止相应进程
十二、计划任务管理
1.at命令:一次性任务设置
at [HH:MM] [yyyy-mm-dd]:设置一次性任务,按ctrl+d 提交任务。
atq :查看at任务。
atrm:删除at任务。
2.crontab命令:周期性任务设置
crontab命令简介:
-
按照预先设置的时间周期(分钟、小时、天......)重复执行用户指定的命令操作。
-
属于周期性计划任务。
主要设置文件:
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
查看/etc/crontab文件:
crontab任务配置的格式:
-
crontab -e [-u 用户名] //编辑计划任务
-
crontab -l [-u 用户名] //查看计划任务
-
crontab -r [-u 用户名] //删除计划任务
注意:
-u选项缺省时默认针对当前用户,只有超级用户才可以使用-u。
使用 "crontab -e" 进入 crontab 编辑界面。会打开vim编辑你的任务,输入格式为:
* * * * * 需要执行的任务
#即:时间周期设置 任务内容设置。
#任务内容设置中,命令一定要用绝对路径,例如cp命令,要用/usr/bin/cp,可以用which查看命令的绝对路径
每个星号(*)表示不同的时间概念:
项目 | 含义 | 范围 |
---|---|---|
第一个"*" | 一小时当中的第几分钟(minute) | 0~59 |
第二个"*" | 一天当中的第几小时(hour) | 0~23 |
第三个"*" | 一个月当中的第几天(day) | 1~31 |
第四个"*" | 一年当中的第几个月(month) | 1~12 |
第五个"*" | 一周当中的星期几(week) | 0~7(0和7都代表星期日) |
时间数值的特殊表示方法:
特殊符号 | 含义 |
---|---|
*(星号) | 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思。 |
,(逗号) | 代表多个不连续的时间点。比如 "0 8,12,16 * * * 命令" 就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 |
-(中杠) | 代表连续的时间范围。比如"0 5 * * 1-6 命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 |
/(正斜线) | 代表每隔多久执行一次(即间隔的时间频率)。比如"*/10命令",代表每隔 10 分钟就执行一次命令。 |
示例:
-
0 17 * * 1-5:周一到周五每天17:00
-
30 8 * * 1,3,5:每周一、三、五的8:30
-
08-18/2 * * * :8点到18点之间每2小时
-
0 * */3 * *:每3天的每个整点
十三、总结
1.查看进程命令
静态查看:ps aux,ps -elf
动态查看:top
查看进程PID:pgrep
以树形结构列出:pstree
列举被系统打开的文件:lsof
监控系统资源:vmstat
发现僵尸进程(状态为Z)一定要杀掉。
“cat /proc/PID/status" 可以查看指定进程具体有几个线程。
2.控制进程
- 后台启动
命令行尾加”&“符号。
- 前后台调度
ctrl+z 挂起当前进程,
jobs查看任务列表
fg 序号,将前台进程调到后台运行。
bg 序号,将后台暂停的进程恢复执行状态。
- 终止进程
kill [信号] PID
killall 进程名
pkill [信号] [-U 用户名]
pkill [信号] [-t 终端名]
3.计划任务管理
- at一次性任务设置
at [HH:MM] [yyyy-mm-dd]:设置一次性任务,按ctrl+d 提交任务。
atq :查看at任务。
atrm:删除at任务。
- crontab周期性任务设置
crontab -e:编辑计划任务。
crontab -l:查看计划任务。
时间格式:分、时、日、月、周几。 可以查看cat /etc/crontab 文件。
*表示任意。
,表示多个不连续的时间点。
-表示连续的时间范围。
/表示频率。
命令要使用绝对路径。
6个选项(时间+任务)都不能为空,必须填写。
4.进程的五大性能
内存使用率:free
cpu使用率:ps,top,w,iostat
硬盘使用率:df
硬盘读写性能:dd,iostat
网络带宽:iftop