Linux进程管理

sleep : 休眠指定的时间
ctrl + z :可以将一个正在前台执行的命令放到后台,并且暂停
fg :将后台中的命令调至前台继续运行,(Foreground)
bg :将进程搬到后台运行(Background)或将后台暂停的命令变成继续执行
jobs :查看当前有多少在后台运行的命令
& :这个用在一个命令的最后,可以把这个命令放到后台执行(通常配合nohup使用)
nohup :不挂断地运行命令
top :动态显示所有的进程
ps :列出当前所有正在运行的进程
kill :终止进程
ctrl + c :结束命令的执行

sleep : 暂停指定的时间

我现在是让休眠30秒,可以看到命令执行后并没有把客户端的shell提示符返还给我,说明正在休眠


image.png

image.png

ctrl + z :将一个正在前台执行的命令放到后台,并且暂停
通过bg %jobnumber 即可将暂停的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %jobnumber 即可。

可以看到sleep 30这个命令暂停执行,并且返回一个后台的进程号

image.png

fg :将后台中的命令调至前台继续运行,(Foreground)
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid号)
bg :将作业放到后台运行,使前台可以执行其他任务,且可将后台暂停的命令变成继续执行 (注意:实际上,使用bg命令与在指令后面添加符号"&"的效果是一样的)

sleep 60
# 按ctrl z 键,暂停命令
sleep 60
# 按ctrl z 键,暂停命令
sleep 120
# 按ctrl z 键,暂停命令
jobs 
# 查看后台进程,可以看到后台当前有三个命令暂停
fg %1 
#把后台暂停的1号工作调到前台,但因为60秒时间已经到了,所以说这个把这个命令调到前台后直接就返回了shell 提示符
fg %2
#把后台暂停的2号工作调到前台,继续执行休眠命令,所以说不返回shell提示符,只能暂停或结束sleep命令才能返回shell提示符
fg %3
#同理
jobs
#查看当前后台进程,只剩两个,但是进程号不会改变(这个号码不是动态的,是唯一的对应于一个进程)
image.png

提交后台进程

方法一(最常用)

nohup Command(要执行的命令) & :提交后台进程
& :这个用在一个命令的最后,可以把这个命令放到后台执行,但一般的普通程序即使使用 & 结尾,把任务放到了后台,shell提示符返还给你,你能继续输入命令来进行别的工作,但如果此时你有事需要离开,要关闭你的客户端,那么后台运行的任务也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,在命令前加上nohup,即便客户端关闭,你提交的任务也可以继续在后台运行,所以一般这两个命令连用来提交后台任务。

如果使用nohup命令提交作业,那么命令的执行情况的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件,无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

image.png

提交后台成功,会返回一个PID号,ps可以查看进程。图中由于我的文件小,运行时间太短,查看进程时已经结束。(命令显示位“Done”)
换个大点的文件,运行时间长的,我们再来看下:

nohup fastq-dump --gzip --split-3 -O ~/text/tmp ~/text/SRR1039508.sra &

image.png

提交成功会出现一个PID号,可以看到这个PID号跟topps查看进程时显示的一致,PID号和进程是一一对应的,kill+PID 号就能终止这个后台进程
image.png

image.png
方法二

如果一个要长时间运行的命令,我们忘记提交后台运行了,而此时又需要做其他的事(当然你可以再开一个窗,但这里讲的是你在同一个窗口下该怎么做)
此时你可以ctrl+z然后再执行bg命令,把任务搬到后台。(注意:因为没有nohup,此时不能关闭客户端)

bin=fastq-dump
dir=/home/yjzhang/scRNA-seq
ls /home/yjzhang/scRNA-seq/sra/SRR6791478 |while read id ;do $bin --gzip --split-3 -O $dir/raw $id ;done
ctrl +z
jobs
ps -ef |grep yjzhang
bg %1
jobs
ps -ef |grep yjzhang
exit
ps -ef |grep yjzhang

image.png

image.png

exit中断服务器连接与直接关闭客户端中断与服务器的连接不一样,第二种方法提交到后台的任务,exit退出与服务器连接的时候,提交的任务仍能在后台运行,而直接关闭客户端退出,这时候bg提交的任务很大可能会终止(应为这个bg就相等于在命令后面加了& ),但有时候也不终止(同样的命令用git登陆服务器执行时会终止,用xshell登陆时执行,退出后就不终止),为了保险起见,推荐使用第一种方法
image.png

kill :发送信号给一个或多个进程(经常用来杀死一个进程)
kill +PID号 #杀死单个进程
ps -ef | grep yjzhang|awk '{print 2}' |while read id; do killid; done #批量杀死所有用户名为 yjzhang 提交的进程

image.png

查看线程
top 统计信息前五行是系统整体的统计信息

top查看线程默认显示是Tasks(任务,进程),加-H参数才显示的是线程(Threads)

image.png

top - 21:25:38 up 2 days, 2 user, load average: 0.08, 0.03, 0.00

1、第一行是任务队列信息 同uptime质性命令结果一样。
21:25:38 up 2 days 2 user load average: 0.08, 0.03, 0.00
当前时间 up:系统运行时间 当前登陆的用户数 系统负载,即任务队列的平均长度,三个数值分别表示距离现在1分钟,5分钟,15分钟的负载情况
21时25分28秒 2天 当前2个用户登陆 1分钟前负载为0.08;5分钟前负载为0.03;15分钟前负载为0.00

注:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

Tasks: 178 total, 1 running, 177 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.1 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

2、第二行、三行为进程和 CPU 的信息。当有多个 CPU 时,内容可能超过两行。
Tasks 178 total 1 running 177 sleeping 0 stopped 0 zombie
进程(任务) 进程总数 正在运行的进程数 休眠(挂起)的进程数 停止的进程数 僵尸进程数
%Cpu(s) 1.2 us 0.1 sy 0.0 ni 99.7 id 0.0 wa 0.0 hi 0.0 si 0.0 st
CPU 占用率 (user) 用户空间占用cpu的百分比 内核空间占用cpu的百分比 niced 改变过优先级的进程占用cpu的百分比 空闲 CPU 百分比 IO wait IO等待占用cpu的百分比 Hardware IRQ 硬中断占用cpu的百分比 software 软中断占用cpu的百分比 Steal Time

注: CPU%是由每个核的 CPU 占用率之和算出来的。如果你是 4 核 CPU,核 1,CPU 使用率为100%,核 2,CPU 使用率为100%,则会CPU 高于100%的现象,最终为200%。

- H参数后第二行显示为Threads
Threads 232 total :目前线程总数232

image.png

KiB Mem : 16300688 total, 422428 free, 291988 used, 15586272 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 15599052 avail Mem

3.第四、五行为内存使用信息
Mem 16300688 total 422428 free 291988 used 15586272 buff/cache
物理内存 物理内存总量 空闲物理内存 使用的物理内存总量 内核缓存内存量
物理总内存16300688k(约16G) 422428k(约0.4G)空闲 291988k(约0.27G)在使用 15586272k用于缓存
Swap 0 total 0 free 0 used 15599052 avail Mem
交换分区 交换分区总量 可用交换空间 使用中的交换空间总量 缓冲的交换区总量

注:交换分区(Swap)被频繁使用,可以看作物理内存不足而造成的

具体进程信息

第六行
PID USER PR NI VIRT RES
进程id 进程所有者 进程优先级 nice值。负值表示高优先级,正值表示低优先级 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR S %CPU %MEM TIME+ COMMAND
共享内存大小,单位kb 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 上次更新到现在的CPU时间占用百分比 进程使用的物理内存百分比 进程使用的CPU时间总计,单位1/100秒 进程名称(命令名/命令行)

查看一个进程所调用的线程
进程概念:
  进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。
线程概念:
  线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。

image.png

可以看到我的一个任务调用了8个线程


image.png

这个调用了6个线程

服务器配置的查询

lscpu #查询CPU详细信息
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l #查讯物理CPU个数
cat /proc/cpuinfo| grep "cpu cores"| uniq #查讯每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "processor"| wc -l #查讯逻辑CPU的个数(线程)
image.png

CPU(s):逻辑上(模拟出的)CPU个数
Thread(s) per core :每个核心的线程数 (查询结果显示我的是每个核心一个线程)
Core(s) per socket :每个物理CPU上的核心数
Model name :CPU型号
说明我用这个服务器是1个CPU,8个物理核心8个线程(即8核单线程)

补充:
CPU个数即CPU芯片个数。
CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。
线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。(注:CPU的线程和进程中的线程概念不一样,CPU线程是模拟出来的核心数,进程中的线程是要完成一个任务所调用的子任务数)

综上来说,在提交一个任务的时候我们要查看一下CPU的使用情况和设置适当的线程数,不要超过限度


学生信,友情推荐:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,755评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,305评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,138评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,791评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,794评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,631评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,362评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,264评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,724评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,040评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,742评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,364评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,944评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,060评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,247评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,979评论 2 355

推荐阅读更多精彩内容