进程和计划任务

目录

什么是进程

1.进程的定义

全生命周期

定义

怎么确定一个程序是单线程还是多线程

使用命令pstree

proc 文件夹是存放进程 

cat status 查看进程状态

prtstat 1719(进程号)  打印进程状态

内存不足 OOM

可以使用命令pmap+pid查看内存占用情况

进程状态

1.进程的基本状态

2.进程的其他状态

进程之间的通讯

进程的优先级 os

更改优先级(临时的一次性,重启失效)

ps命令(查看静态的进程信息)

a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息

u:使用以用户为主的格式输出进程信息

x:显示当前用户在所有终端下的进程信息

-e:显示系统内的所有进程信息

-l:使用长(Long)格式显示进程信息

-f:使用完整的(Full)格式显示进程信

过滤僵尸进程  ps aux  |grep Z

ps axo pid,user |head    单独查看pid,user

ps axu k -%cpu|head   查看cpu占用降序

案例

如果发现了一个病毒占用cup如何找到他(cpu或者内存占用过高)

1.先找到pid号

2.进入存放进程的文件夹 proc

3.进入pid的文件夹

4.查看路径位置

5.一般的杀死没有用,病毒有再生功能,可以在创建一个相同的文件,病毒就不能在创建相同的文件 (chattr +i a 这样文件a就没办法删除)

top命令(动态查看内存,cpu的使用率,进程)

-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒

-b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中

-n 次数:指定 top 命令执行的次数。一般和"-"选项合用

-p 进程PID:仅查看指定 ID 的进程

-s:使 top 命令在安全模式中运行,避免在交互模式中出现错误

-u 用户名:只监听某个用户的进程

pgrep 特定信息查找

-U 指定用户

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示指定进程的子进程

pidof nginx  查看pid号 (只知道程序名不知道pid号)

pidstat 7674 (查看cpu状态)

pstree 命令进程树

-a    显示启动每个进程对应的完整指令,包括启动进程的路径、参数等

-p 显示PID

-u 显示用户切换

-H pid 高亮显示指定进程及其前辈进程

losf 命令

-c 字符串    只列出以字符串开头的进程打开的文件

+d 目录名   列出某个目录中所有被进程调用的文件

-u 用户名    只列出某个用户的进程打开的文件

-p pid          列出某个 PID 进程打开的文件

vmstat命令 (监控系统资源)

-f    显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的

-S   单位   令输出的数据显示单位,例如用 K/M 取代 bytes 的容量

-d   列出硬盘有关读写总量的统计表

-p 分区设备文件名 查看硬盘分区的读写情况

free 命令(查看内存)

-h  显示单位

-m  以M为单位查看

pmap 914(进程号)查看进程占用  内存的详细信息

iostat 命令 (是I/O statistics(输入/输出统计)的缩写,用于监视Linux的磁盘操作)

-c 只显示CPU行

-d 显示设备〈磁盘)使用状态

-k 以千字节为为单位显示输出

-t 在输出中包括时间戳

-x 在输出中包括扩展的磁盘指标

进程启动方式

2.尚未启动的作业: COMMAND & 在命令后面加& 在后台处于执行状态

 jobs查看后台任务列表

fg 调出后台任务

bg 继续任务

ctrl + z  放到后台但是会停止工作

kill(结束进程)

0  exit  程序退出时收到该信息

1  hup  挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化

2  INT  表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号

3 quit   退出

9  kill  杀死进程,即强制结束进程

11  segv  段错误

15  term  正常结束进程,是 kill 命令的默认信号

计划任务

at(一次性)

crontab(周计划)

-u 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运

-e  编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件

-l  显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容

-r  从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件

-i  在删除用户的 crontab 文件时,给确认提示


什么是进程

1.进程的定义

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程有动态性特征,它的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

全生命周期

定义

进程 产生 运行 消失 僵尸进程

线程干活,进程负责下发任务 存储一些共享资源

怎么确定一个程序是单线程还是多线程

使用命令pstree

进程和计划任务_第1张图片

proc 文件夹是存放进程 

进程和计划任务_第2张图片

cat status 查看进程状态

进程和计划任务_第3张图片

进程和计划任务_第4张图片

  • Name: 进程的名称。
  • Umask: 默认的文件系统掩码,决定了新建文件的权限。
  • State: 进程的状态,S代表睡眠状态(等待事件来唤醒)。
  • Tgid: 线程组ID,如果进程不是线程的话,它和PID相同。
  • Pid: 进程ID。
  • PPid: 父进程ID。
  • UidGid: 用户ID和组ID,分别代表这个进程的拥有者和组。
  • FDSize: 文件描述符的数量限制。
  • VmPeak, VmSize, VmLck, VmPin, VmHWM, 和 VmRSS: 不同类型的虚拟内存使用量。
    • VmPeak: 进程的虚拟内存使用峰值。
    • VmSize: 进程当前的虚拟内存使用量。
    • VmLck: 锁定在内存中的量。
    • VmPin: 不能被操作系统换出的内存量。
    • VmHWM: 进程的最高物理内存使用量。
    • VmRSS: 进程当前的物理内存使用量,不包括交换出去的。
  • RssAnon, RssFile, RssShmem: 分别代表匿名映射,文件映射,共享内存映射的物理内存使用量。
  • VmData, VmStk, VmExe, VmLib, VmPTE: 分别代表数据,栈,可执行代码,库以及页表条目的虚拟内存使用量。

这个文件通常被用于监控系统和进程的性能以及资源使用情况。

prtstat 1719(进程号)  打印进程状态

进程和计划任务_第5张图片

内存不足 OOM

可以使用命令pmap+pid查看内存占用情况

进程和计划任务_第6张图片

进程状态

1.进程的基本状态

创建:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

就绪:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行

执行:进程处于就绪状态被调度后,进程进入执行状态

阻塞:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用

终止:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

2.进程的其他状态

运行态:running

就绪态:ready

睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable

停止态:stopped,暂停于内存,但不会被调度,除非手动启动

僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程

进程结束 父进程 会回收子进程的硬件资源

子进程如果出现意外关闭, 父进程无感知就不会收回资源,这个人为关闭父进程, 资源不会回收产生僵尸进程

进程之间的通讯

同一主机:pipe 管道,单项传输     cmd1 | cmd2

socket  套接字 IP地址确定网络中的一台具体主机

kill 去杀死程序  (signal 信号 )

9强制关系              去传递信号

Lock    对资源上锁  一般用于银行

进程的优先级 os

进程和计划任务_第7张图片

更改优先级(临时的一次性,重启失效)

nice -n -10 ping 127.0.0.1
renice -n -20 2118

ps命令(查看静态的进程信息)

通常使用 ps aux              ps elf

直接打ps显示当前终端运行

进程和计划任务_第8张图片

a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息

u:使用以用户为主的格式输出进程信息

x:显示当前用户在所有终端下的进程信息

-e:显示系统内的所有进程信息

-l:使用长(Long)格式显示进程信息

-f:使用完整的(Full)格式显示进程信

k|--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu

o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

过滤僵尸进程  ps aux  |grep Z

ps axo pid,user |head    单独查看pid,user

进程和计划任务_第9张图片

ps axu k -%cpu|head   查看cpu占用降序

进程和计划任务_第10张图片

案例

如果发现了一个病毒占用cup如何找到他(cpu或者内存占用过高)

1.先找到pid号

进程和计划任务_第11张图片

2.进入存放进程的文件夹 proc

3.进入pid的文件夹

4.查看路径位置

5.一般的杀死没有用,病毒有再生功能,可以在创建一个相同的文件,病毒就不能在创建相同的文件 (chattr +i a 这样文件a就没办法删除)

top命令(动态查看内存,cpu的使用率,进程)

-d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒

-b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中

-n 次数:指定 top 命令执行的次数。一般和"-"选项合用

-p 进程PID:仅查看指定 ID 的进程

-s:使 top 命令在安全模式中运行,避免在交互模式中出现错误

-u 用户名:只监听某个用户的进程

进程和计划任务_第12张图片

pgrep 特定信息查找

-U 指定用户

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示指定进程的子进程

进程和计划任务_第13张图片

pidof nginx  查看pid号 (只知道程序名不知道pid号)

进程和计划任务_第14张图片

pidstat 7674 (查看cpu状态)

pstree 命令进程树

常用选项

-a    显示启动每个进程对应的完整指令,包括启动进程的路径、参数等

-p 显示PID

-u 显示用户切换

-H pid 高亮显示指定进程及其前辈进程

进程和计划任务_第15张图片

losf 命令

-c 字符串    只列出以字符串开头的进程打开的文件

+d 目录名   列出某个目录中所有被进程调用的文件

-u 用户名    只列出某个用户的进程打开的文件

-p pid          列出某个 PID 进程打开的文件

进程和计划任务_第16张图片

vmstat命令 (监控系统资源)

-f    显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的

-S   单位   令输出的数据显示单位,例如用 K/M 取代 bytes 的容量

-d   列出硬盘有关读写总量的统计表

-p 分区设备文件名 查看硬盘分区的读写情况

free 命令(查看内存)

-h  显示单位

-m  以M为单位查看

清缓存    echo 3 > /proc/sys/vm/drop_caches

pmap 914(进程号)查看进程占用  内存的详细信息

进程和计划任务_第17张图片

iostat 命令 (是I/O statistics(输入/输出统计)的缩写,用于监视Linux的磁盘操作)

-c 只显示CPU行

-d 显示设备〈磁盘)使用状态

-k 以千字节为为单位显示输出

-t 在输出中包括时间戳

-x 在输出中包括扩展的磁盘指标

​​​​​​进程和计划任务_第18张图片

进程启动方式

前台启动:通过终端启动,且启动后一直占据终端

后台启动:可通过终端启动,但启动后即转入后台运行

后台运行:

1.运行中的作业: Ctrl+z 放到后台 但是会停止作业

2.尚未启动的作业: COMMAND & 在命令后面加& 在后台处于执行状态

 jobs查看后台任务列表

fg 调出后台任务

bg 继续任务

ctrl + z  放到后台但是会停止工作

并执行命令任务 ping 127.0.0.1&ping 127.0.0.2&ping 127.0.0.3&

kill(结束进程)

 格式:kill  [信号]  PID

0  exit  程序退出时收到该信息

1  hup  挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化

2  INT  表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号

3 quit   退出

9  kill  杀死进程,即强制结束进程

11  segv  段错误

15  term  正常结束进程,是 kill 命令的默认信号

计划任务

at(一次性)

at [选项] [时间]

at  时:分  年 月 日  

进程和计划任务_第19张图片

crontab(周计划)

crontab [选项] [file]

-u 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运

-e  编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件

-l  显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容

-r  从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件

-i  在删除用户的 crontab 文件时,给确认提示

crontab -e  

第一个"*"     一小时当中的第几分钟(minute)     0~59

第二个"*"    一天当中的第几小时(hour)            0~23   

第三个"*"     一个月当中的第几天(day)              1~31

第四个"*"      一年当中的第几个月(month)       1~12

第五个"*"    一周当中的星期几(week)      0~7(0和7都代表星期日)

进程和计划任务_第20张图片

*(星号) 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思
,(逗号) 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令
-(中杠) 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令
/(正斜线) 代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令

进程和计划任务_第21张图片

每月的1 号15号 20号创建一个123的文件

你可能感兴趣的:(linux,运维,服务器)