Linux | Job control

news2025/4/6 23:57:24

Linux | Job control

文章目录

  • Linux | Job control
    • 命令
      • 直接将命令丢到后台中“执行”的 &
      • 将当前工作丢到后台“暂停”:Ctrl + z
      • 查看后台工作状态:jobs
      • 将后台工作拿到前台处理:fg
      • 让工作在后台下的状态变成运行中:bg
      • 管理后台工作: kill
        • signal 具体含义
    • 脱机管理
      • nohup
      • 欢迎关注公众号【三戒纪元】

工作管理(job control)是登录系统,取得bash shell之后,在单一终端机下同时进行多个工作的行为管理。

进行bash的job control 的限制是:

  • 这些工作所触发的进程必须来自于shell的子进程(只管理自己的bash)
  • 前台:可以控制与执行命令的环境成为前台工作
  • 后台:可以自行运行的干工作,无法按使用 ctrl + c终止它,可以使用 bg/fg调用该工作
  • 后台中“执行”的进程不能等待 terminal / shell 的输入(input)

命令

直接将命令丢到后台中“执行”的 &

例如将某个压缩行为丢到后台

tar -zpcf /tmp/randy.tar.gz /etc &

tar -zpcf randy_File.tar.gz randy_File/ &
[1] 9762
(base) qiancj@qiancj-HP-ZBook-G8:~$ ls randy_File.tar.gz 
randy_File.tar.gz
[1]+  Done                    tar -zpcf randy_File.tar.gz randy_File/

这里会返回 [ j o b   n u m b e r ] P I D [job \ number ] PID [job number]PID

  • job number : 工作号码,与bash d的控制有关
  • 9762: PID, progress ID,进程号

如果后台进程有很多日志,可以通过数据流重定向,将输出数据传送到某个文件中:

ar -zpcvf randy_File.tar1.gz randy_File > log_randy.txt 2>&1 & 
[1] 10664

将当前工作丢到后台“暂停”:Ctrl + z

如果正好在使用vi,但是有个文件路径不知道在哪里,需要查找一下,此时可以将vi 丢到后台即可

(base) qiancj@qiancj-HP-ZBook-G8:~$ vi ~/.bashrc

[1]+  Stopped                 vi ~/.bashrc
(base) qiancj@qiancj-HP-ZBook-G8:~$ find ./ -name randy
....
^Z
[2]+  Stopped                 find ./ -name randy

[numbeer] 表示工作号码

Stopped表示工作暂停了

查看后台工作状态:jobs

(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs --help
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Display status of jobs.
    
    Lists the active jobs.  JOBSPEC restricts output to that job.
    Without options, the status of all active jobs is displayed.
    
    Options:
      -l	lists process IDs in addition to the normal information
      -n	lists only processes that have changed status since the last
    		notification
      -p	lists process IDs only
      -r	restrict output to running jobs
      -s	restrict output to stopped jobs
    
    If -x is supplied, COMMAND is run after all job specifications that
    appear in ARGS have been replaced with the process ID of that job's
    process group leader.
    
    Exit Status:
    Returns success unless an invalid option is given or an error occurs.
    If -x is used, returns the exit status of COMMAND.

参数:

  • -l : 列出 job number 和 PID号码
  • -r: 仅列出正在后台run的工作
  • -s: 仅列出后台stop的干工作
  • -n: 仅列出自上次通知以来状态已更改的进程
  • -p: 仅列出进程 ID
(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs
[1]-  Stopped                 vim randy.sanjiejiyuan
[2]+  Stopped                 find . -name randy
[3]   Exit 1                  find . -name sanjiejiyuan
(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs -l
[1]- 13295 Stopped                 vim randy.sanjiejiyuan
[2]+ 13421 Stopped                 find . -name randy
(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs -s
[1]-  Stopped                 vim randy.sanjiejiyuan # - 表示倒数第二个加入后台的工作
[2]+  Stopped                 find . -name randy  # + 表示最近加入后台的工作
(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs -r
(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs -n
(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs -p
13295
13421

将后台工作拿到前台处理:fg

fg %[job number]

(base) qiancj@qiancj-HP-ZBook-G8:~$ fg  <== 默认取出 + 的工作,即[2]
find . -name randy
(base) qiancj@qiancj-HP-ZBook-G8:~$ fg %1 <== 取出规定的工作号码
vim randy.sanjiejiyuan

让工作在后台下的状态变成运行中:bg

(base) qiancj@qiancj-HP-ZBook-G8:~$ jobs ; bg %1; jobs
[1]+  Stopped                 find / -name randy > log_randy.txt
[1]+ find / -name randy > log_randy.txt &
[1]+  Running                 find / -name randy > log_randy.txt &

管理后台工作: kill

强制删除后台工作

使用方法

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
kill: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
    Send a signal to a job.
    
    Send the processes identified by PID or JOBSPEC the signal named by
    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then
    SIGTERM is assumed.
    
    Options:
      -s sig	SIG is a signal name
      -n sig	SIG is a signal number
      -l	list the signal names; if arguments follow `-l' they are
    		assumed to be signal numbers for which names should be listed
      -L	synonym for -l
    
    Kill is a shell builtin for two reasons: it allows job IDs to be used
    instead of process IDs, and allows processes to be killed if the limit
    on processes that you can create is reached.
    
    Exit Status:
    Returns success unless an invalid option is given or an error occurs.

简单用法就是 kill -signal %[job number]

  • kill -l : 列出当前能够使用的信号有哪些
(base) qiancj@qiancj-HP-ZBook-G8:~$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

(base) qiancj@qiancj-HP-ZBook-G8:~$ kill -l SIGQUIT
3
(base) qiancj@qiancj-HP-ZBook-G8:~$ kill -l QUIT
3
(base) qiancj@qiancj-HP-ZBook-G8:~$ kill -l 9
KILL

例如:

  • 1 SIGHUP : 重新读取1次参数配置文件,类似reload
  • 2 SIGINT : 等同于 ctrl + c
  • 9 SIGKILL: 立即强制删除1个工作
  • 15 SIGTERM: 以正常的程序方式终止1项工作

所以平时所用的 kill -9 PID,杀死进程的命令,如今知道具体含义了。

此外还有:

  • ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程
  • ctrl-z 发送 SIGTSTP 信号给前台进程组中的进程
  • ctrl-\ 发送 SIGQUIT 信号给前台进程组中的进程,终止前台进程并生成 core 文件

signal 具体含义

Signal      Standard   Action   Comment
────────────────────────────────────────────────────────────────────────
SIGABRT      P1990      Core    Abort signal from abort(3)
SIGALRM      P1990      Term    Timer signal from alarm(2)
SIGBUS       P2001      Core    Bus error (bad memory access)
SIGCHLD      P1990      Ign     Child stopped or terminated
SIGCLD         -        Ign     A synonym for SIGCHLD
SIGCONT      P1990      Cont    Continue if stopped
SIGEMT         -        Term    Emulator trap
SIGFPE       P1990      Core    Floating-point exception
SIGHUP       P1990      Term    Hangup detected on controlling terminal
                                or death of controlling process
SIGILL       P1990      Core    Illegal Instruction
SIGINFO        -                A synonym for SIGPWR
SIGINT       P1990      Term    Interrupt from keyboard
SIGIO          -        Term    I/O now possible (4.2BSD)
SIGIOT         -        Core    IOT trap. A synonym for SIGABRT
SIGKILL      P1990      Term    Kill signal
SIGLOST        -        Term    File lock lost (unused)
SIGPIPE      P1990      Term    Broken pipe: write to pipe with no
                                readers; see pipe(7)
SIGPOLL      P2001      Term    Pollable event (Sys V).
                                Synonym for SIGIO
SIGPROF      P2001      Term    Profiling timer expired
SIGPWR         -        Term    Power failure (System V)
SIGQUIT      P1990      Core    Quit from keyboard
SIGSEGV      P1990      Core    Invalid memory reference
SIGSTKFLT      -        Term    Stack fault on coprocessor (unused)

SIGSTOP      P1990      Stop    Stop process
SIGTSTP      P1990      Stop    Stop typed at terminal
SIGSYS       P2001      Core    Bad system call (SVr4);
                                see also seccomp(2)
SIGTERM      P1990      Term    Termination signal
SIGTRAP      P2001      Core    Trace/breakpoint trap
SIGTTIN      P1990      Stop    Terminal input for background process
SIGTTOU      P1990      Stop    Terminal output for background process
SIGUNUSED      -        Core    Synonymous with SIGSYS
SIGURG       P2001      Ign     Urgent condition on socket (4.2BSD)
SIGUSR1      P1990      Term    User-defined signal 1
SIGUSR2      P1990      Term    User-defined signal 2
SIGVTALRM    P2001      Term    Virtual alarm clock (4.2BSD)
SIGXCPU      P2001      Core    CPU time limit exceeded (4.2BSD);
                                see setrlimit(2)
SIGXFSZ      P2001      Core    File size limit exceeded (4.2BSD);
                                see setrlimit(2)
SIGWINCH       -        Ign     Window resize signal (4.3BSD, Sun)

脱机管理

上述放到后台的工作,是可以避免 Ctrl + C 中断的,并不是放到系统后台去。因此,工作管理的后台依旧与终端有关。

如果将工作 以 & 方式放到后台,当我们关闭终端时,工作不会继续。当工作放到远程 Linux主机,当我们脱机后,工作不会继续进行,而是被中断掉。

nohup

nohup 可以在脱机或注销系统后,还能够让工作继续进行。

用法:

nohup [命令与参数]    <===== 在终端机前台工作
nohup [命令与参数] &  <===== 在终端机后台工作

注意:nohup 并不支持bash 内置命令,因此命令必须是外部命令才行。

因此可以将命令编写到 python里或shell脚本里。

执行日志会被定向到 ~/nohup.out文件中。

可以使用tail -f ~/nohup.out命令持续查看。


欢迎关注公众号【三戒纪元】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/620055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt6之vc调用qt生成的带ui的dll

受益于跨平台的特性&#xff0c;Qt生成dll的各种语言调用上体现的淋漓尽致&#xff0c;上篇已经演示了qt生成的无ui的dll及vc如何调用它&#xff0c;本篇将演示vc如何调用qt生成的带ui的dll。 传统观点认为Qt生成的带ui的dll受限于 QApplication 的 exec 方法&#xff0c;这样才…

《精通特征工程》学习笔记(6):非线性特征化与k-均值模型堆叠

1.非线性特征 当数据位于一个薄饼状的线性子空间时&#xff0c;PCA 是非常有用的。但如果数据形成了一个更加复杂的形状&#xff0c;情况又将如何呢&#xff1f; 如果线性子空间是一张平展的纸&#xff0c;那么非线性流形的一个简单例子就是卷起来的纸&#xff0c;它有 个非…

《人人健康》期刊简介及投稿邮箱

《人人健康》期刊简介及投稿邮箱 《人人健康》期刊简介&#xff1a; 主管单位&#xff1a;山西出版传媒集团有限责任公司 主办单位&#xff1a;山西三晋报刊传媒集团有限责任公司 国际刊号ISSN&#xff1a;1004-597X 国内刊号CN&#xff1a;14-1033/R 邮发代号&#xff1…

不甘做小弟,JS时间对象又在搞事情!(上)

关注“大前端私房菜”微信公众号&#xff0c;回复暗号【面试宝典】即可免费领取107页前端面试题。 Date Date 是 js 的一个内置对象&#xff0c;也叫内置构造函数。提供了一堆的方法帮助我们更方便的操作时间 创建时间对象&#xff1a;new Date() 获取时间对象&#xff1a;ne…

NTSC和PAL视频格式的区别

1&#xff0c;历史演变 NTSC早期描述的是525I59.94格式视频&#xff0c;1953年确立标准&#xff0c;美国主导。后来为了方便和PAL制式格式的视频转换&#xff0c;于是将60hz的倍数关系的帧率纳入该系统。 PAL描述的是625I50格式视频&#xff0c;1967年确立标准&#xff0c;欧洲…

完全免费白嫖 GPT-4 的终极方案!

原文链接&#xff1a;https://icloudnative.io/posts/completely-free-to-use-gpt4/ GPT-4 目前是世界上最强的多模态大模型&#xff0c;能力甩 GPT-3.5 好几条街。 大家都希望早日用上 GPT-4&#xff0c;不过目前体验 GPT-4 的渠道非常有限&#xff0c;要么就是开通 ChatGPT …

Java编程笔记31:Record

Java编程笔记31&#xff1a;Record 图源&#xff1a;Fotor懒设计 在日常使用的时候&#xff0c;我们往往需要创建一些“仅用于传输数据的类型”&#xff0c;比如Web编程时候的DTO。 将特殊用途的类型限制为“只读”的一个好处是&#xff0c;这些类型可以安全地在多线程之间共享…

uniapp开发小程序-显示左滑删除效果

一、效果图&#xff1a; 二、代码实现&#xff1a; <template><view class"container"><view class"myorderList"><uni-swipe-action><uni-swipe-action-item class"swipe-action-item" :right-options"option…

【严重】Nacos 集群Raft反序列化漏洞

漏洞描述 Nacos是一个用于动态服务发现和配置以及服务管理的平台。 攻击者可以在Nacos集群处理某些Jraft请求时利用Hessian进行无限制的反序列化&#xff0c;从而造成远程代码执行。 由于Nacos默认监听7848端口处理Raft协议请求&#xff0c;攻击者可能通过向7848端口发送恶意…

[笔记]C++并发编程实战 《四》同步并发操作

文章目录 前言第4章 同步并发操作4.1 等待一个事件或其他条件4.1.1 等待条件达成4.1.2 使用条件变量构建线程安全队列 4.2 使用期望值等待一次性事件4.2.1 后台任务的返回值4.2.2 任务与期望值关联4.2.3 使用(std::)promises4.2.4 将异常存与期望值中4.2.5 多个线程的等待 前言…

【Mysql】InnoDB 中的聚簇索引、二级索引、联合索引

一、聚簇索引 其实之前内容中介绍的 B 树就是聚簇索引。 这种索引不需要我们显示地使用 INDEX 语句去创建&#xff0c;InnoDB 引擎会自动创建。另外&#xff0c;在 InnoDB 引擎中&#xff0c;聚簇索引就是数据的存储方式。 它有 2 个特点&#xff1a; 特点 1 使用记录主键…

【每日挠头算法题(2)】压缩字符串|仅执行一次字符串交换能否使两个字符串相等

文章目录 一、压缩字符串思路 二、仅执行一次字符串交换能否使两个字符串相等思路1&#xff1a;计数法思路2&#xff1a;模拟法 总结 一、压缩字符串 点我直达~ 思路 使用双指针法 大致过程如下&#xff1a; 使用双指针&#xff0c;分别读&#xff08;read&#xff09;&…

mPak的使用文档

mpak介绍 mpak是一种文件格式&#xff0c;同时也是一款虚幻引擎插件&#xff0c;该插件提供了打包、解析和挂载mPak文件的方法&#xff0c;将不同平台的软件包和未编译的资源集成到mPak文件中&#xff0c;该文件具有跨平台兼容性。它支持不同阶段的挂载&#xff0c;例如在编辑…

monaco-editor插件自定义编辑器内容颜色

开始之前先说一下他的自定义内容颜色的api monaco.languages.setMonarchTokensProvider((languageId: string, languageDef: IMonarchLanguage | Thenable<IMonarchLanguage>)) 参数解析&#xff1a;接收两个参数 一个是你要设置的编辑器语言种类&#xff0c;可以是sq…

Ubuntu14.04安装igH EtherCAT Master

一、下载EtherCAT安装包 安装包下载路径&#xff1a;EtherLab EtherCAT Master / Code / [334c34]&#xff0c;打开后点击Download下载 二、安装前置依赖库 最好切换到root用户进行下列步骤 apt-get install autoconf automake libtool net-tools三、编译安装 解压安装包&a…

excel如何折叠展开行列?

Excel可以使用分组功能来实现折叠展开行列的效果&#xff0c;同时可以在单元格内添加号或-号来进行操作。 具体步骤如下&#xff1a; 1. 选中需要进行折叠展开的行或列&#xff0c;右键选择“分组”。 2. 在弹出的“分组”对话框中&#xff0c;选择“行”或“列”&#xff0…

『赠书活动 | 第十一期』清华社赞助 | 《Python系列丛书》

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 『赠书活动 &#xff5c; 第十一期』 本期书籍&#xff1a;《Python系列丛书》 公众号赠书&#xff1a;第三期 参与方式&#xff1a;关注公众号&#xff1a;低调而奢…

逻辑回归分类器-创建词向量-情感分析

题目 请使用您今天学习的逻辑回归分类器对下面的聊天机器人数据进行自动分类。&#xff08;3分&#xff09; https://github.com/songys/Chatbot_data&#xff08;ChatbotData.csv文件&#xff09; https://raw.githubusercontent.com/songys/Chatbot_data/master/ChatbotDa…

【职业人生】如何有效的在职场当中避免工作失误和提高个人发展

《左传宣公二年》&#xff1a;“人谁无过&#xff0c;过而能改&#xff0c;善莫大焉。”古往今来&#xff0c;多少人犯过错误。强大如“智绝”的诸葛孔明&#xff0c;也有街亭之失。职场人更是难免会在工作中出现失误。 在职场生涯当中避免不了在工作当中带来的失误&#xff0c…

【Hadoop综合实践】手机卖场大数据综合项目分析

&#x1f680; 本文章实现了基于MapReduce的手机浏览日志分析 &#x1f680; 文章简介&#xff1a;主要包含了数据生成部分&#xff0c;数据处理部分&#xff0c;数据存储部分与数据可视化部分 &#x1f680; 【本文仅供参考】其中需求实现的方式有多种&#xff0c;提供的代码并…