Linux中查看及终止正在运行的后台程序

本文介绍了Linux任务管理中后台运行与终止的相关知识。涵盖了&、ctrl + z、jobs、fg、bg等命令的使用,说明了将任务转移到后台运行的方法,还阐述了前后台进程的终止、挂起操作,以及kill命令的其他作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux 任务管理-后台运行与终止
fg、bg、jobs、&、ctrl + z命令
一、 &
加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &,
二、ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行
三、jobs
查看当前有多少在后台运行的命令
jobs
-l选项可显示所有任务的PID,jobs的状态可以是running, stopped,
Terminated,但是如果任务被终止了(kill),shell
从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;
四、fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五、bg
将一个在后台暂停的命令,变成继续执行 (在后台执行)
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
将任务转移到后台运行:
先ctrl + z;再bg,这样进程就被移到后台运行,终端还能继续接受命令。
概念:当前任务

果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”
的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务
进程的终止
后台进程的终止:
方法一:
通过jobs命令查看job号(假设为num),然后执行kill %num
方法二:
通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
前台进程的终止:
ctrl+c
kill的其他作用
kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。
进程的挂起
后台进程的挂起:
在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;
前台进程的挂起:
ctrl+Z;

### 如何在 Linux 服务器上让程序在后台运行Linux 中,有多种方法可以让程序在后台运行。以下是几种常见的实现方式: #### 使用 `&` 符号 通过在命令后面加上 `&` 符号,可以将进程放到后台执行[^2]。这种方式简单易用,适合短期运行的任务。 ```bash my_program & ``` 此操作会立即返回提示符,允许用户继续输入其他命令。需要注意的是,如果关闭终端,该任务可能会被终止,除非采取额外措施防止这种情况发生。 #### 使用 `nohup` 命令 为了确保即使退出登录或关闭终端,程序仍然能够持续运行,可以使用 `nohup` 命令[^3]。它会忽略挂起信号 (SIGHUP),从而保持程序的正常工作状态。 ```bash nohup my_program > output.log 2>&1 & ``` 上述命令中的重定向部分 (`> output.log 2>&1`) 将标准输出和错误消息保存到文件中以便后续查看。 #### 利用 Screen 或 Tmux 工具 对于更复杂的场景或者需要重新连接至已启动的应用场合,则推荐采用 GNU Screen 或 tmux 这类工具来创建分离式的 shell session[^4]。这样即便断开了当前 SSH 连接,session 及其内部运行的所有应用程序都不会受到影响。 安装并初始化 screen 后可按如下方式进行操作: ```bash screen -S my_session_name # 在这里启动您的应用... Ctrl+A D # 脱离当前屏幕会话但保留其中活动的内容 ``` 同样适用于 tmux 的基本流程为: ```bash tmux new -s my_session_name # 执行所需指令.... tmux detach # 按快捷键组合 Ctrl+B 再按下 d 键即可脱离 ``` #### 设置守护线程/服务 当涉及到长期稳定的服务型软件部署时,考虑将其作为系统级服务管理更为合适。这通常涉及编写 systemd service 文件或将逻辑嵌入到特定框架里完成自动化加载与监控功能[^5]。 例如定义一个新的 Systemd Service Unit File `/etc/systemd/system/myprogram.service`: ```ini [Unit] Description=My Program Daemon After=network.target [Service] ExecStart=/path/to/my_program Restart=always User=nobody Group=nogroup Environment="VAR_NAME=value" [Install] WantedBy=multi-user.target ``` 之后启用并启动服务: ```bash systemctl enable myprogram systemctl start myprogram ``` 以上介绍了四种主要途径用于实现在 Linux 平台上使某个程序于背景模式下运作的方法,并且每种都有各自适用范围以及优缺点所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值