Linux程序、进程和计划任务
目录
一.程序和进程
1.程序的概念
在硬盘上执行特定程序的一串代码
2.进程的概念
程序启动后,系统会赋予一个pid,这个含有pid而且在运行中的程序叫做进程。
3.线程的概念
线程的出现是为了解决切换进程之间出现的硬件消耗
(1)减少硬件资源的消耗
(2)一个线程至少有一个进程
(3)相同资源的存储
4.单线程与多线程
grep -i threads /proc/pid号/status
或prtstat pid号 | grep -i? threads
5.进程的状态
运行态:running
就绪态:ready
睡眠态,可中断:interruptable,不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态的子进程, 解决方法: 重启或将父进程唤起
二.查看进程信息相关命令:
1.ps:查看静态进程信息状态
格式:
ps aux ?? ??? ??? ??? ?#基本格式
ps aux | wc -l?? ??? ?#结合管道符号查询具体的数量(需要-1)
a | 所有终端 |
u | 以用户格式 |
x | 所有进程 |
-e | 显示系统内的所有进程信息 |
-l | 使用长(Long)格式显示进程信息 |
-f | 使用完整的(Full)格式显示进程信 |
k|--sort | 对属性排序,属性前加 - 表示倒序 |
o | 选项显示定制的信息 |
表头?? ?含义
USER?? ?该进程是由哪个用户产生的。
PID?? ?进程的 ID。
%CPU?? ?该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM?? ?该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ?? ?该进程占用虚拟内存的大小,单位为 KB。
RSS?? ?该进程占用实际物理内存的大小,单位为 KB。
TTY?? ?该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程
STAT?? ?进程状态。常见的状态有以下几种: -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。 -R:该进程正在运行。 -S:该进程处于睡眠状态,可被唤醒。 -T:停止状态,可能是在后台暂停或进程处于除错状态。 -W:内存交互状态(从 2.6 内核开始无效)。 -X:死掉的进程(应该不会出现)。 -Z:僵尸进程。进程已经中止,但是还是占用硬件资源。 -<:高优先级(以下状态在 BSD 格式中出现)。 -N:低优先级。 -L:被锁入内存。 -s:包含子进程。 -l:多线程(小写 L)。 -+:位于后台。
START?? ?该进程的启动时间。
TIME?? ?该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND?? ?产生此进程的命令名。
2.top:查看动态进程排名信息
-d 秒数?? ?指定 top 命令每隔几秒更新。默认是 3 秒
-b?? ?使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中
-n 次数?? ?指定 top 命令执行的次数。一般和"-"选项合用
-p 进程PID?? ?仅查看指定 ID 的进程
-s?? ?使 top 命令在安全模式中运行,避免在交互模式中出现错误
-u 用户名?? ?只监听某个用户的进程
第一行:任务列表信息
内 容 说 明 12:26:46 系统当前时间 up 1 day, 13:32 系统的运行时间.本机己经运行 1 天 13 小时 32 分钟 2 users 当前登录了两个用户 load average: 0.00,0.00,0.00 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)
第二行为进程信息
内 容 说 明 Tasks: 95 total 系统中的进程总数 1 running 正在运行的进程数 94 sleeping 睡眠的进程数 0 stopped 正在停止的进程数 0 zombie 僵尸进程数。如果不是 0,则需要手工检查僵尸进程
第三行为 CPU 信息
内 容 说 明 Cpu(s): 0.1 %us 用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率 0.1%sy 系统模式占用的 CPU 百分比 0.0%ni 改变过优先级的用户进程占用的 CPU 百分比 99.7%id 空闲 CPU 占用的 CPU 百分比 0.1%wa 等待输入/输出的进程占用的 CPU 百分比 1 0.0%hi 硬中断请求服务占用的 CPU 百分比 0.1%si 软中断请求服务占用的 CPU 百分比 0.0%st st(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比
第四行为物理内存信息
内 容 说 明 Mem: 625344k total 物理内存的总量,单位为KB 571504k used 己经使用的物理内存数量 53840k&ee 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存 65800k buffers 作为缓冲的内存数量
?第五行为交换分区(swap)信息
内 容 说 明 Swap: 524280k total 交换分区(虚拟内存)的总大小 Ok used 已经使用的交换分区的大小 524280k free 空闲交换分区的大小 409280k cached 作为缓存的交换分区的大小
3.pgrep:查看指定进程?
-U | 指定用户 |
-l | 显示进程名 |
-a | 显示完整格式的进程名 |
-P pid | 显示指定进程的子进程???? |
-t | 指定终端 |
4.pstree:以树形结构列出进程信息?
-a | 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等 |
-p | 显示PID |
-T- | 不显示线程thread,默认显示线程 |
-u | 显示用户切换 |
-H pid | 高亮显示指定进程及其前辈进程 |
6.iostat:显示所有设备负载情况?
格式:
iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
-c | 显示CPU使用情况 |
-d | 显示磁盘使用情况 |
-N | 显示磁盘阵列(LVM) 信息 |
-n | 显示NFS 使用情况 |
-k | 以 KB 为单位显示 |
-m | 以 M 为单位显示 |
-t | 报告每秒向终端读取和写入的字符数和CPU的信息 |
-V | 显示版本信息 |
-x | 显示详细信息 |
-p | 显示磁盘和分区的情况 |
三.查看系统性能
CPU | top w |
内存 | top free |
硬盘剩余 | df |
硬盘读写 | iostat |
网络带宽 | ifop |
四.进程管理
1.手动启动
前台启动:通过终端启动后一直占据终端,用户输入命令,直接执行的程序
后台启动:可通过终端启动,但启动后即转入后台运行(释放终端),在命令行尾加入“&”符号
2.进程的前后台调度
(1)ctrl+z
将当前进程挂起,即调入后台并停止执行
(2)jobs
[ -l ] :显示PID号
查看处于后台的任务列表
(3)fg命令
将后台进程恢复到前台运行,可指定任务序号
3.终止程序的运行
(1)ctrl+c
中断正在执行的命令
(2)kill
- kill用于终止指定PID号的进程
- klll用于终止指定名称相关的所有进程
- -9选项用于强制终止
格式:
kill [信号] PID
0?? ?EXIT?? ?程序退出时收到该信息。
1?? ?HUP?? ?挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2?? ?INT?? ?表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3?? ?QUIT?? ?退出。
9?? ?KILL?? ?杀死进程,即强制结束进程。
11?? ?SEGV?? ?段错误。
15?? ?TERM?? ?正常结束进程,是 kill 命令的默认信号。kill all? ?#杀死全部进程
(3)pkill
根据特定条件终止相应的进程(不建议使用)
- -U:根据进程所属的用户名终止相应进程;
- -t:根据进程所在的终端终止相应进程。
五.计划任务管理?
1.at:设置一次性计划任务
at [HH:MM] ?[yyyy-mm-dd]?? ??? ?#不带年月日为今天执行
atq ??? ??? ??? ??? ??? ??? ??? ?#查看未执行的一次性计划任务
atrm ?1?? ??? ??? ??? ??? ??? ??? ?#删除第一条任务
2.crontab:周期性计划任务
格式:
crontab [选项] [file]
-u user?? ?用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。
-e?? ?编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l?? ?显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r?? ?从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i?? ?在删除用户的 crontab 文件时,给确认提示。
?
?
格式:
* * * * *
第一个* | 哪一分钟 | 0-53 |
第二个* | 哪一小时 | 0-23 |
第三个* | 哪一天 | 1-31 |
第四个* | 哪一月 | 1-12 |
第五个* | 星期几 | 0-7? ?07代表星期天 |
?
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!