当前位置: 首页 > news >正文

程序与进程 linux系统

程序与进程

程序 ( program ):
    通常为 binary program ,放置在储存媒体中(如硬盘、光盘、软盘、磁带等),
    为实体文件的型态存在;二进制文件,比如静态 /bin/date, /usr/sbin/httpd,
    /usr/sbin/sshd,/usr/local/nginx/sbin/nginx;
    
进程 ( process ):
    程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中,
    操作系统并给予这个内存内的单元一个识别码 ( PID ),可以说,进程就是一个正
    在运行中的程序。是程序运行的过程,动态,有生命周期及运行状态。
    1
进程调用:
    一个进程通过fork()函数,创建一个和自己一样的进程。被创建出来的进程是子进程,
    而创建子进程的进程就是父进程子进程是父进程的一个副本,是它的复制,两者不共享
    地址空间(内存)。
    
程序调用的流程 fork and exec :    
    其实子程序与父程序之间的关系还挺复杂的,最大的复杂点在于程序互相之间的调用。
    在 Linux 的程序调用通常称为 fork-and-exec 的流程程序都会借由父程序以复制 ( fork )
    的方式产生一个一模一样的子程序, 然后被复制出来的子程序再以 exec的方式来执行
    实际要进行的程序,最终就成为一个子程序的存在。
    
    echo $$        查看当前进程ID
    echo $PPID    查看父进程ID
    
僵尸进程:
    一个进程使用fork创建子进程,如果父进程退出,子进程没有退出,没有父进程统一管理和
    结束,所占资源无法释放。
    
进程的属性:
    进程ID:PID 唯一的值,用来区分进程
    父进程的ID: PPID
    启动进程的用户ID(UID)和所属组(GID)
    进程状态:运行R  休眠S 僵尸Z
    进程执行的优先级
    进程所连接的终端名
    进程资源占用:内存、cpu占用量
    
1.进程静态查看工具 ps
    用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序

选项:
    a: 显示当前终端关联的所有进程
    u:基于用户的格式显示
    x: 显示所有进程,不以终端来区分,通常与a这个参数一起使用。
    -e:显示所有程序,与-A具有同样的效果
    -l或l(小写L):采用详细的格式来显示程序状况。
    -f:显示UID,PPIP,C与STIME栏位。    
    -j或j:采用工作控制的格式显示程序状况。(jobs format)
    

常用方法    
ps aux    观察系统所有程序数据

USER   PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root    1  0.1  0.2 125712  4232 ?        Ss   08:44   0:02 /usr/lib/systemd/systemd

USER :该 process 属于那个使用者帐号的?
PID :该 process 的程序识别码。
%CPU :该 process 使用掉的 CPU 资源百分比;
%MEM :该 process 所占用的实体内存百分比;
VSZ :该 process 使用掉的虚拟内存量 ( KBytes )
RSS :该 process 占用的固定的内存量 ( KBytes )
TTY :该 process 是在那个终端机上面运行,若与终端机无关则显示 ?,另外,
    tty1-tty6 是本机上面的登陆者程序,若为pts/0 等等的,则表示为由网络连接进主机的程序。
STAT :该程序目前的状态,状态显示与 ps -l 的 S 旗标相同 ( R/S/T/Z)
    R:runing 运行态
    S:可中断睡眠态
    D:不可中断睡眠态
    T:停止态
    Z:僵尸态
    s:表示这个进程是个领导者进程
    +:该进程为前台进程
    l:该进程是多线程进程
    N:低优先级进程
    <: 高优先级进程
    []: 表示这个一个内核线程
START :该 process 被触发启动的时间;
TIME :该 process 实际使用 CPU 运行的时间。
COMMAND :该程序的实际指令为何?
注:最后一列用[]括起来的进程是内核态进程,无[]的是用户态进程


ps -l     仅观察和登录者相关的程序

F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root       3066   3064  0  80   0 - 29082 do_wai 09:05 pts/1    00:00:00 -bash

F :代表这个程序旗标 ( process flags ),说明这个程序的总结权限,常见号码:
    若为 4 表示此程序的权限为 root ;
    若为 1 则表示此子程序仅进行复制( fork )而没有实际执行(exec )。
S :代表这个程序的状态 ( STAT )
UID/PID/PPID:代表 此程序被该 UID 所拥有 / 程序的 PID 号码 / 此程序的父程序 PID 号码
C:代表CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先顺序,数值越小代表该程序越
    快被 CPU 执行。
ADDR/SZ/WCHAN :都与内存有关, ADDR 是 kernel function ,指出该程序在内存的哪个部分,
    如果是个 running 的程序,一般就会显示 “ - ” / SZ 代表此程序用掉多少内存 / WCHAN
    表示目前程序是否运行中,同样的, 若为 - 表示正在运行中。
TTY:登陆者的终端机位置,若为远端登陆则使用动态终端接口(pts/n )
TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运行的时间,而不是系统时间;
CMD:就是 command 的缩写,造成此程序的触发程序之指令为何。


pstree  -p      显示进程树形结构
pgrep  -l  -u lisi   通过条件查找进程(查lisi所有进程)


2. 进程动态查看工具 top
    可以持续的监测整个系统的程序工作状态。每次更新程序资源的时间为5秒,可以使用 -d 来
    进行修改。
    
    top -d 2      每隔2秒刷新一次
    
    M    按内存排比
    P   按cpu排比
    T   按时间排比
    
    us — 用户空间占用CPU的百分比。
    sy — 内核空间占用CPU的百分比。
    ni — 改变过优先级的进程占用CPU的百分比
    id — 空闲CPU百分比
    wa — IO等待占用CPU的百分比
    hi — 硬中断(Hardware IRQ)占用CPU的百分比
    si — 软中断(Software Interrupts)占用CPU的百分比
    st ---虚拟cpu等待实际cpu的时间百分比
    
    top 默认使用 CPU 使用率( %CPU ) 作为排序的重点,如果你想要使用内
    存使用率排序,则可以按 “M”, 若要恢复则按 “P” 即可。如果想要离开
    top 则按 “ q ” 。

    若将 top 的信息进行2次,然后输出到/top/top.txt
    top -b -n 2 > /tmp/top.txt


3. 进程的前后台调动

    前台:你可以控制与下达指令的这个环境称为前景的工作 (foreground )
    后台:可以自行运行的工作,无法使用 ctrl+c 终止他,可使用 bg/fg 调用该工作

    ctrl + z      把前台进程调到后台停止执行
    
    &              把前台进程调到后台继续执行
    例: cp /dev/cdrom  /root/centos7.iso &
    
    jobs           查看后台工作状态
        -l:显示进程号;
        -p:仅任务对应的显示进程号;
        -n:显示任务状态的变化;
        -r:仅输出运行状态(running)的任务;
        -s:仅输出停止状态(stoped)的任务。
        
    fg            将后台任务拿到前台处理    
    bg            将后台暂停任务继续执行
    
    安装nginx 测试进程管理
    yum install nginx -y
    systemctl start nginx
    ps aux |grep nginx |grep -v grep
    ps -elf |grep nginx |grep -v grep
    netstat -anptl |grep nginx    #查看端口
    
    
    kill       进程号        仅杀死某个进程号的进程
    killall  进程名        杀死进程名开启的所有进程和子进程
    pkill -u lisi        杀死满足条件的进程
        -9        强制
        -15        正常结束,默认
        
        -l        列出所有信号
            0    status  状态
            1    SIGHUP    重载
            2   SIGINT    终止,Ctrl+c
            3    SIGQUIT    退出
            9    SIGKILL 强制终止
            15  SIGTERM 正常结束,默认
            18  SIGCONT 继续
            19  SIGSTOP 停止
            20  SIGTSTP 暂停,ctrl+z
            
4. 改变进程优先级

PRI :进程优先权,代表这个进程可被执行的优先级,其值越小,优先级就越高,越早被执行
NI :进程Nice值,代表这个进程的优先值,-20到19,PRI(new)=PRI(old)+nice
%nice :改变过优先级的进程的占用CPU的百分比

命令:
nice -n -5 vim &    指定执行命令的nice值
renice -5 进程号    修改已运行进程的nice值
    
5. screen 虚拟窗口管理器,建立稳定的远程管理会话
    远程执行长时间操作,比如:数据库的备份,数据量较大,ssh远程连接中断,备份也会中止
    
    yum -y install screen
    
(1)要进行某项操作时,先使用命令创建一个Screen:
    screen -S test1
    
(2)接着就可以在里面进行操作了,如果你的任务还没完成就要走开的话,使用命令保留Screen:
    Ctrl+a+d                    #按Ctrl+a,然后再按d即可保留Screen
    [detached]                  #这时会显示出这个提示,说明已经保留好Screen了

   如果你工作完成的话,就直接输入:
    exit                        #这样就表示成功退出了
    [screen is terminating]
    
(3)如果你上一次保留了Screen,可以使用命令查看:
    screen -ls

(4)恢复Screen,使用命令:
    screen -r test1
    
Screen命令中用到的快捷键
Ctrl+a c :创建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一个窗口
Ctrl+a p :上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换
Ctrl+a K(大写) :关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)
exit :关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始shell状态)
Ctrl+a d :退出当前终端,返回加载screen前的shell命令状态


工作经验:恢复误删除文件(仅限于centos6)

ext3: 恢复命令 ext3grep
ext4: 恢复命令 extundelete

windows: final data、easyrecovery

工作经验:服务器基础知识

服务器高度单位:U     1U=4.445厘米

常见品牌:2U
    Dell R730 R740 R750
    惠普(HP)DL388Gen10/DL380G10
    浪潮(INSPUR) NF5280 M5
    华为(HUAWEI)    2288HV5

相关文章:

程序与进程 linux系统

程序与进程 程序 &#xff08; program &#xff09;&#xff1a; 通常为 binary program &#xff0c;放置在储存媒体中&#xff08;如硬盘、光盘、软盘、磁带等&#xff09;&#xff0c; 为实体文件的型态存在&#xff1b;二进制文件&#xff0c;比如静态 /bin/date…...

使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏

Story Tools Studio利用先进的生成式AI技术&#xff0c;打造沉浸式、个性化、无穷尽的情景体验。 Story Tools Studio创始人兼首席执行官Roy Altman表示&#xff1a;“我们的旗舰游戏Myth Maker AI采用的是我们自主研发的、以AI为驱动的专家指导型故事生成器MUSE&#xff0c;它…...

鸿蒙UIAbility组件概述(二)

鸿蒙UIAbility组件概述 UIAbility组件基本用法指定UIAbility的启动页面获取UIAbility的上下文信息 UIAbility组件与UI的数据同步使用EventHub进行数据通信使用AppStorage/LocalStorage进行数据同步 UIAbility组件间交互&#xff08;设备内&#xff09;启动应用内的UIAbility启动…...

Oracle(70)如何优化SQL查询?

优化SQL查询是数据库管理的重要部分&#xff0c;旨在提高查询性能&#xff0c;减少响应时间和资源消耗。以下是一些常见的SQL查询优化技术&#xff0c;结合代码示例详细说明。 1. 使用索引 索引是优化查询性能的最常见方法之一。索引可以显著减少数据检索的时间。 示例 假设…...

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…...

【YOLO】常用脚本

目录 VOC转YOLO划分训练集、测试集与验证集 VOC转YOLO import os import xml.etree.ElementTree as ETdef convert(size, box):dw 1. / size[0]dh 1. / size[1]x (box[0] box[1]) / 2.0y (box[2] box[3]) / 2.0w box[1] - box[0]h box[3] - box[2]x x * dww w * dwy…...

Springboot IOC DI理解及实现+JUnit的引入+参数配置

一、JavaConfig 我们通常使用 Spring 都会使用 XML 配置&#xff0c;随着功能以及业务逻辑的日益复杂&#xff0c;应用伴随着大量的 XML 配置文件以及复杂的 bean 依赖关系&#xff0c;使用起来很不方便。 在 Spring 3.0 开始&#xff0c;Spring 官方就已经开始推荐使用 Java…...

CeresPCL 最小二乘插值(曲线拟合)

一、简介 在多项式插值时,当数据点个数较多时,插值会导致多项式曲线阶数过高,带来不稳定因素。因此我们可以通过固定幂基函数的最高次数 m(m < n),来对我们要拟合的曲线进行降阶。之前的函数形式就可以变为: 既然是最小二乘问题,那么就仍然可以使用Ceres来进行求解。 …...

【TCP/IP】自定义应用层协议,常见端口号

互联网中&#xff0c;主流的是 TCP/IP 五层协议 5G/4G 上网&#xff0c;是有自己的协议栈&#xff0c;要比 TCP/IP 更复杂&#xff08;能够把 TCP/IP 的一部分内容给包含进去了&#xff09; 应用层 可以代表我们所编写的应用程序&#xff0c;只要应用程序里面用到了网络通信…...

Frida 的下载和安装

首先要安装好 python 环境 安装 frida 和 工具包 pip install frida frida-tools 查看版本&#xff1a; frida --version 16.4.8 然后到 github 上下载对应 server &#xff08; 和frida 的版本一致 16.4.8&#xff09; Releases frida/frida (github.com) 查看手机或…...

后端开发刷题 | 链表内指定区间反转【链表篇】

描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转&#xff0c;要求时间复杂度 O(n)O(n)&#xff0c;空间复杂度 O(1)O(1)。 例如&#xff1a; 给出的链表为 1→2→3→4→5→NULL1→2→3→4→5→NULL, m2,n4 返回 1→4→3→2→5→NULL 数据范围&#xff1a; 链表…...

【NVMe系列-提问页与文章总结页面】

NVMe系列-提问页与文章总结页面 问题汇总NVMe协议是什么&#xff1f;PRP 与 PRP List是做什么的&#xff1f; 已写文章汇总 问题汇总 NVMe协议是什么&#xff1f; PRP 与 PRP List是做什么的&#xff1f; 已写文章汇总...

用生成器函数生成表单各字段

生成器函数生成表单字段是非常合适的用法,避免你要用纯javascript做后台时频繁的制作表单&#xff0c;而不能重复利用 //这里是javascript部分&#xff0c;formfiled.js //生成器函数对字段的处理&#xff0c;让各字段name\className\label\value\placeholder赋值到input的属性…...

【xilinx】O-RAN 无线电接口 - Vivado 2020.1 及更新工具版本的发行说明

描述 记录包含 O-RAN 无线电接口 LogiCORE IP 的发行说明和已知问题&#xff0c;包括以下内容&#xff1a; 一般信息已知和已解决的问题 解决方案 一般信息 可以在以下三个位置找到支持的设备&#xff1a; O-RAN 无线电接口 IP 产品指南&#xff08;需要访问O-RAN 安全站点&…...

结营考试- 算法进阶营地 - DAY11

结营考试 - 算法进阶营地 - DAY11 测评链接&#xff1b; A - 打卡题 考点&#xff1a;枚举&#xff1b; 分析 枚举 a _①_ b _②_ c d&#xff0c;中两个运算符的 3 3 3 种可能性&#xff0c;尝试寻找一种符合要求的答案。 参考代码 #include <bits/stdc.h> usi…...

设计模式: 访问者模式

文章目录 一、介绍二、模式结构三、优缺点1、优点2、缺点 四、应用场景 一、介绍 Visitor 模式&#xff08;访问者模式&#xff09;是一种行为设计模式&#xff0c;它允许在不修改对象结构的前提下&#xff0c;增加作用于一组对象上新的操作。就增加新的操作而言&#xff0c;V…...

selenium底层原理详解

目录 1、selenium版本的演变 1.1、Selenium 1.x&#xff08;Selenium RC时代&#xff09; 1.2、Selenium 2.x&#xff08;WebDriver整合时代&#xff09; 1.3、Selenium 3.x 2、selenium原理说明 3、源码说明 3.1、启动webdriver服务建立连接 3.2、发送操作 1、seleni…...

【Solidity】继承

继承 Solidity 中使用 is 关键字实现继承&#xff1a; contract Father {function getNumber() public pure returns (uint) {return 10;}function getNumber2() public pure virtual returns (uint) {return 20;} }contract Son is Father {}现在 Son 就可以调用 Father 的 …...

docker 安装mino服务,启动报错: Fatal glibc error: CPU does not support x86-64-v2

背景 docker 安装mino服务&#xff0c;启动报错&#xff1a; Fatal glibc error: CPU does not support x86-64-v2 原因 Docker 镜像中的 glibc 版本要求 CPU 支持 x86-64-v2 指令集&#xff0c;而你的硬件不支持。 解决办法 降低minio对应的镜像版本 经过验证&#xff1a;qu…...

地图相册系统的设计与实现

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...