存储在硬盘、光盘等介质中含有可执行代码的可执行文件。
不删除就永久存在。
状态为静态。
进程是资源分配的最小单位。
临时存储在内存中(关机消失)。
动态执行的代码。
一个父进程可以拥有多个子进程。若该进程的父进程先行终止,而子进程没由终止,其子进程变为僵尸进程
根据线程数分类可以分为
进程型程序和线程型程序。
线程是CPU调度的最小单位(程序执行的最小单元,共享线程内存资源)
进程程序:一个程序就一个线程,从稳定性的角度来看程序稳定更好。
线程程序:一个进程有6万多个线程,从效率的角度看线程型程序更好。
- 父进程(master)先启动然后子进程(worker)启动,由socket进程守护端口。
- 父进程先于子进程死掉,子进程的资源无法回收,形成僵尸进程
命令1:
ps aux选项:
a显示终端上的所有进程,包括其它用户的进程。
u表示列出进程的用户。
x显示当前用户在所有终端下的进程信息。
列名 说明 USER 进程的用户 PID 进程的ID号 %CPU 进程占用的 CPU 百分比 %MEM 进程占用的 内存 的百分比 VSZ 进程使用的虚拟内存量 RSS 进程占用的物理内存量 TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?STAT 进程状态:D 不可中断状态;R 正在运行;S 休眠状态;T 停止状态;Z 僵尸进程,该进程的父进程已经死掉 START 进程的启动时间 TIME 进程运行的时间 COMMAND 进程的启动命令 命令2:
ps -elf或ps -eLf选项:
-e显示系统内的所有进程信息。
l使用长格式显示进程信息。
L查看进程的父进程号
f使用完整的格式显示进程信息。l可以查看进程的父进程号,L可以查看进程的父进程号
命令:
top [选项]选项:
-d指定刷新的间隔时间,单位秒
-b以批量处理模式操作,一般与-n同时使用
-n指定循环显示的次数
-u指定用户名
-p指定进程号
- 作用:top 命令将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括 CPU、 内存等系
统资源占用情况,默认情况下三秒刷新一次,默认以 CPU 占用率排序。top交互界面示例图:
表头第一行解释:
系统时间 up 5:32 ##系统已运行时长 2 user ##当前登录用户数 load average: 0.00, 0.01, 0.05 ##平均负载:1分,5分,15分表头第二行解释:
Tasks ##总进程数 Threads ##总线程数(按H) running ##正在运行的进程数 sleeping ##休眠的进程数 stopped ##中止的进程数 zombie ##僵死的进程数表头第三行解释:
us ##用户占用 sy ##内核占用 ni ##优先级调度占用 id ##空闲CPU,要解空闲的 CPU 百分比,主要看%id 部分 wa ##I/O 等待占用 hi ##硬件中断占用 si ##软件中断占用 st ##虚拟化占用表头第四行解释:
total ##总内存空间 free ##空闲内存 used ##已用内存 buff/cache ##物理内存和交换内存的缓冲区总和表头第五行解释:
total ##总交换空间 free ##空闲交换空间 used ##已用交换空间 avail Mem ##可用物理空间top交互按键:
按键 作用 P键 根据CPU使用百分比大小进行排序 M键 根据内存大小进行排序 N 键 根据启动时间进行排序 c 键 切换显示命令名称和完整命令行 h 键 top程序的帮助界面 k键 输入指定进程的 PID 号终止进程 q 键 退出 数字 1 键 显示CPU个数和状态 H 键 查看线程
命令:
pgrep [选项]常用选项:
-l显示进程名
-U指定特定用户
-t指定终端
命令:
pstree [选项]常用选项:
-a显示完整信息
-u列出对应用户名
-p列出对应 PID 号
例:我们启动一个ping命令常常会占据我们的前台,这个时候我们不能进行其他操作
这时,我们可以通过以后台启动的方式进行ping
我们只需要在命令的末尾加上
&符号即可
后台程序可以用
jobs -l命令查看(-l可以查看其的PID)
fg命令可以将后台进程恢复到前台运行,可指定任务程序号
Ctrl+Z将当前进程挂起,即调入后台并停止执行
bg命令可以将后台暂停的进程调至后台运行
nohup用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
Ctrl+C中断正在执行的命令
kill killall命令 (-9 选项用于强制终止)
kill 用于终止指定 PID 号的进程
killall 用于终止指定名称的所有进程
pkill命令格式:
pkill -9 [选项](-9 选项用于强制终止)选项:
-U根据进程所属的用户名终止相应进程
-t根据进程所在的终端终止相应进程
at命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务atd必须已经运行。需要注意
的是,计划任务执行的时间、日期必须安排在当前系统的时候之后,否则将无法正确设置计划任务。
at命令 :在指定的时间执行命令。Ctrl + D 进行提交at的特殊写法:
- at 20:00 2024-10-1 在具体时间执行
- at now +10min 在十分钟后执行
- at 17:00 tomorrow 明天下午五点执行
- at 6:00 pm + 3 days 在3天后下午6点执行
- at 23:00 < a.txt 将a.txt导入
at -c 查看任务的具体内容
atrm[任务序号]删除第几项任务 atrm=at -d
atq 或 at -l查看 未执行的定时任务列表;
命令:
at HH:MM选项:
-l查看已有一次性定时任务
-d删除指定定时任务
-c查看任务的具体内容
ctrl+D保存任务
使用
crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复性系统管理任务的操作。启用周期性任务也有一个前提的条件,即对应的系统服务crond必须已经运行。
- 按照预先设置的 时间周期(分、时、日、月、周)重复执行用户 指定的命令 操作
- 属于 周期性计划任务。
- 主要设置文件
- 全局配置文件:
/etc/crontab- 系统默认的设置:
/etc/cron.*/- 用户定义的设置:
/var/spool/cron/用户名- 日志文件:
/var/log/cron- 邮件文件保存位置:
/var/spool/mail- 邮件发送失败,会保存小文件:
/var/spool/postfix/maildrop命令:
crontab [选项]选项:
-e编辑计划任务
-l查看计划任务
-r清空定时任务定时任务的格式为:分 时 日 月 周 命令
10 10 1 1 * /bin/ls /root时间数值表示方法:
*:表示这个字段的范围内 任意 的时间;,:表示间隔的多个 不连续 时间点;-:表示一个 连续 的时间范围;/:指定间隔的时间频率,每几天、每几小时 执行一次;常见的表达式实例:
0 17 * * 1-5 # 周一 到 周五 每天17:00 30 8 * * 1,3,5 # 每周一、三、五的 8点30分 0 8-18/2 * * * # 8点 到 18点 之间 每2小时 0 * */3 * * # 每 3 天 0 0 * * * #每天定时执行一次 0 0 * * 1 #每周定时执行一次 0 0 1 * * #每月定时执行一次 0 0 1 1 * #每年定时执行一次
- 用户定义的设置:/var/spool/cron/用户名
上一篇:第一章、Linux基础命令