技术标签: 运维 linux 服务器 Linux系统管理 缓存
本章主要介绍程序和进程的区别,如何查看进行,有多种方式进行查看;进程的启动方式,有多种启动方式,前台运行还是后台运行,如何互相调用前后台运行;设置周期性任务,一次性任务还是周期性任务怎么设置,怎么删除;如何删除一个进行,怎么删除,批量删除还是强制删除。
总结:程序二进制文件,静态的。
总结:进程是程序运行的过程,动态的,有生命周期及运行状态
负责功能的运行
多线程可同时运行多个任务
有三种状态
①就绪状态:在创建线程后存在等待cpu过来的执行的时间称为就绪状态
②运行状态:当cpu过来执行就会转变成运行状态
③阻塞状态:线程因为某种原因放弃对cpu的使用权后进入阻塞状态,等变成就绪状态后才可运行。
总结:线程是进程下面执行任务。最小程序的执行单位。
解释: 一个子进程退出,而父进程并没有对子进程进行回收,释放子进程占用的资源,此时子进程将成为僵尸进程。
弊端: 僵尸进程无法直接杀掉,它占用一些资源(进程号),虽然占用的不多,但是僵尸进程如果过多的话,会导致其它正常进程无法使用。
消除僵尸进程办法:
①找到僵尸进程的父进程然后将父进程杀死,这样就会结束掉僵尸进程,但是这样做存在风险,因为该父进程下面其它所有的进程都会被杀掉。
②假如已经杀死了僵尸进程的父进程,但是僵尸进程还没,这时,僵尸进程会变成孤儿进程,孤儿进程会被init进程收养,init进程会对孤儿进程完成收养工作。
②假如僵尸进程的父进程是init进程,那不能杀init进程,杀了将整个系统就挂了,那就可以实现“曲线救国”的方式,将僵尸进程挂起,挂起之后,什么都做不了。
解释: 一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程所收养,并由init进程对他们完成状态收集工作。
解释:以简单列表的形式显示出进程信息。
常用选项
选项 | 作用 |
---|---|
-a | 显示当前终端下的所有进程信息,包括其他用户的进程 |
-u | 使用以用户为主的格式显示进程信息 |
-x | 显示当前用户在所有终端下的进程信息 |
上述信息中,第一行为列表的标题,其字段的含义描述如下
标题 | 含义 |
---|---|
USER | 启动该进程的用户账号名称 |
PID | 该进程在系统中的数字ID号,在当前系统中是唯一的 |
%CPU | CPU占用的百分比 |
%MEM | 内存占用百分比 |
VSZ | 该进程使用的虚拟内存量(单位:KB) |
RSS | 该进程占用的物理内存量(单位:KB) |
TTY | 标明该进程在哪个终端上运行。 pts是远程登录终端,tty1:图像界面,tty2和tty6:字符界面,?:系统本身执行的进程 |
STAT | 该进程的状态 |
START | 启动该进程的时间(什么时候启动的) |
TIME | 该进程占用CPU的时间(启动需要花多少时间) |
COMMAND | 启动该进程的命令的名称 |
其中STAT进程状态描述信息如下
D:系统守护进程(daemon)
R:正在运行(running)
S:睡眠状态(sleep)
Z:僵尸状态(zombie)
T:停止状态
优先级符号:
<:表示进程运行在高优先级上
N:表示进程运行在低优先级上
L:表示进程有页面锁定在内存中
s:表示进程是控制进行
l:表示进程是多线程的
+:表示当前进程运行在前台
解释:将以长格式显示系统中的进程信息
常用选项
选项 | 作用 |
---|---|
-e | 显示系统内的所有进程信息 |
-l | 使用长格式显示进程信息 |
-f | 使用完整的格式显示进程信息 |
上述各列的解释
标题 | 解释 |
---|---|
F | 内核分配给进程的系统标记 |
S | 进程的状态 |
UID | 启动这些进程的用户 |
PID | 进程ID |
PPID | 父进程的进程ID |
C | 进程生命周期中的CPU利用率 |
PRI | 进程的优先级(越大的数字代表越低的优先级) |
NI | 谦让度值,用来参与决定优先级 |
ADDR | 进程的内存地址 |
SZ | 假如进程被换出,所需交换空间的大致大小 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
STIME | 进程启动时的系统时间 |
TTY | 进程启动时的终端设备 |
TIME | 运行进程需要的累计CPU时间 |
CMD | 进程的启动命令 |
第一行信息解释
信息 | 含义 |
---|---|
15:28:22 | 当前时间 |
up 3:57 | 系统运行时间 |
4 users | 当前登录的用户数 |
load averaqe :0.00,0.01,0.05 | 系统负载,即任务队列的平均长度,三个数值分别为1分钟、5分钟、15分钟前到现在的平均值 |
平均负载解释:
假如是单核cpu:
满负载就是1.00,满负载不是代表系统以及运行不了了,而是如果有多出来的任务,那就需要进行等待。
如果为1.20,表示CPU已经超负载运行,有两个任务需要进行等待才可以运行。
如果为0.70,表示CPU在未达到满负载运行,还可以运行其他任务。
假如是双核CPU:
那满负载的值就是2.00。其它依次类推
第二行信息解释(系统任务)
信息 | 含义 |
---|---|
185 total | 总进程数185个 |
1 running | 正在运行的进程数1个 |
183 sleeping | 休眠的进程数:183个 |
1 stopped | 中止的进程数:1个 |
0 zombie | 僵死无响应的进程数:0个 |
第三行信息解释(CPU占用信息)
信息 | 含义 |
---|---|
0.0 us | 用户占用 |
0.0 sy | 内核占用 |
0.0 ni | 优先级调度占用 |
100.0 id | 空闲CPU |
0.0 wa | I/O等待占用 |
0.0 hi | 硬件中断占用 |
0.0 si | 软件中断占用 |
0.0 st | 虚拟化占用 |
第四行信息解释(内存占用)
信息 | 含义 |
---|---|
total | 总内存空间 |
free | 空闲内存 |
used | 已用内存 |
buff/cache | 物理内存和交换内存的缓冲区总和 |
第五行信息解释(交换空间)
信息 | 含义 |
---|---|
total | 总交换空间 |
free | 空闲交换空间 |
used | 已用交换空间 |
avail Mem | 可用物理空间 |
内容详细说明
信息 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者的用户名 |
PR | 优先级(由内核动态调整),用户不能 |
NI | 进程优先级,nice值,负值表示高优先级,正值表示低优先级,用户可自己调整 |
VIRT | 虚拟内存,是进程正在使用的所有内存 |
RES | 进程所使用的物理内存 |
SHR | 共享内存大小,(单位KB) |
S | 进程状态 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名/命令行 |
top 命令全屏操作界面快捷键
命令键 | 功能 |
---|---|
P | 按CPU排序 |
M | 按内存排序 |
T | 按时间排序 |
k | 根据提示输入指定进程的PID号,并按Enter键终止对应的进程 |
p | 进程IP,查看某个进程状态 |
N | 根据启动时间进行排序 |
数字键1 | 显示每个内核的CPU的个数和状态 |
h | 可以获得top程序的在线帮助信息 |
q | 退出top程序 |
①制造压力
创建一个目录,使用dd复制内存大的文件到/目录下。
查看top中cpu和内存的使用情况
②解决cpu占用
在生产环境中,也许某一个程序一直在占用高性能的cpu,但是我们不知道是什么程序造成,可以在top中将该进程结束掉。
③解决硬盘占用
上述①结果造成的后果为硬盘不足,下面进行排除与解决
先查看哪个目录占用过大。
再进到该目录,查看哪个文件较大,最后将它删除即可
常用选项
选项 | 作用 |
---|---|
-l | 同时输出对应的进程名以及PID |
-U | 查询特定用户的进程 |
-t | 查询在特定终端运行的进程 |
实例:
默认情况下指显示个进程的名称。
常用选项
选项 | 作用 |
---|---|
-p | 使用时可以同时列出对应的PID号 |
-u | 可以列出对应的用户名 |
-a | 可以列出完整的命令信息 |
实例:
Ctrl+Z 组合键 : 将当前进程挂起,即调入后台并停止执行
jobs命令: 查看当前终端处于后台的任务列表
fg命令: 将后台进程恢复到前台运行,可指定任务序号
bg命令: 将后台程序继续在后台运行。
格式:at [HH:MM](时间) [yyy-mm-dd] (年月日,可以省略)
ctrl +D : 提交任务
atq: 查看一次性任务管理
atrm + 序号 : 删除一次性任务
注意:对于已设置单还未执行(未到时间点)的计划任务,可以通过atq命令进行查询,但是已执行的at任务将不会再出现在列表中
①设置系统在22:06分关机
②设置23:00时将/opt/目录下文件复制到当前目录,设置23:30时将/根目录下所有文件删除,设置23:30将/home/ydq文件进行压缩。然后将第二个任务删除掉。
概括:crontab守护进程会自动检查/etc/crontab文件、/etc/cron.d目录及/var/spool/cron/目录中的改变,如果发现配置有更改,它们就会被载入内存,所以当某个crontab文件改变后并不需要重新启动,crond守护进程就可设置生效。
默认情况下不使用-u是针对root用户,只有root用户才能对其它用户使用-u选项
格式:crontab -e [-u 用户名]
格式:crontab -l [-u 用户名]
格式:crontab -r [-u 用户名]
字段 | 分钟 | 小时 | 日期 | 月份 | 星期 | 命令 |
---|---|---|---|---|---|---|
范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7(0或7代表周日) | 要执行的命令或程序脚本 |
时间数值的特殊表示方法
应用示例:
分、时、日、月、周
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每2个小时
0 * * /3 * * 每3天
因各条计划任务在执行时并不需要用户登录,所以任务配置记录中的命令建议使用 绝对路径 ,以避免因缺少执行路径而无法执行命令的情况。
另外,在设置非每分都执行的任务时, “分钟”字段也应该填写一个具体的时间数值 比如0 ,而不要保留为默认的“*”,否则将会在每分钟执行一次计划任务。
①每天早上7点50分开启sshd服务
②每隔3天将/opt目录下所有文件删除
③21:30时将/opt/ydq 文件进程压缩
④将以前的计划任任务删除,创建一个用户ydq的计划任务,每隔3天的12:00将/opt目录下所有文件复制到/mnt下面,并删除该任务。
Ctrl+C 组合键:结束终端正在执行的命令
Kill 用来终止指定PID号的进程
kill -l :查看所有选项发出的信号
默认不加的选项是 -15
Killall 用来终止指定名称的所有进程
选项信号 | 作用 |
---|---|
-1(HUP) | 重新加载进程 |
-9(KILL) | 终止进程 |
-15(TERM) | 正常停止进程 |
根据特定条件终止相应的进程
常用命令选项
选项 | 作用 |
---|---|
-U | 根据进程所属的用户名终止相应进程 |
-t | 根据进程所在的终端终止相应进程 |
程序时静态的,进程是动态的、是程序的运行过程。
线程负责功能的运行,是执行最小单位。
静态查询 :ps -aux 、 ps -elf 、 pgrep 、pstree
动态查询:top
手工启动:
调度启动
一次性计划任务----at
周期性计划任务----crontab
终止单个进程:kill
终止多个进程:killall
根据特定条件终止相应的进程:pkill
文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib
文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang
文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些
文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器
文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距
文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器
文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn
文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios
文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql
文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...
文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120
文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数