Linux笔记:后台运行命令与脱离终端运行命令

本文介绍了如何在Linux中实现后台运行命令及脱离终端执行命令,包括使用&、ctrl+z、jobs、nohup、setsid和disown等方法。重点讲解了nohup命令和setsid命令如何确保命令在用户关闭终端后仍能继续运行。同时提到了screen和tmux等更高级的工具,用于更复杂的任务管理。
摘要由CSDN通过智能技术生成

目的

linux中我们一般都是在终端中通过命令进行各种操作,通常情况下一个终端同一时间只能执行一条命令,并且如果关闭当前终端或者注销登陆当前正在执行的命令会被关闭。这些时候就需要通过一些方法来后台运行命令或是脱离终端运行命令了,这篇文章将对这个问题的一些基础处理方法进行说明。

后台运行命令

  • 将命令放入后台
    在命令后面加上 (空格) & 可以将命令放入后台执行;
    命令放入后台后会显示 [工作号] 进程号 信息;
    如有被放入后台执行的命令有输出,输出内容将在前台显示;
    放入后台的命令执行完成后会显示 [1]+ Done ... 内容(+表示最近放入的命令);
    除了上面方式也可以使用 ctrl+z 可以将当前正在执行的命令已暂停状态放入后台;
    在这里插入图片描述
  • 查看在后台的命令
    使用 jobs 命令可以查看放入后台的命令,附加 -l 参数可以额外显示进程的PID号;
    在这里插入图片描述
  • 将后台命令恢复到前台
    使用 fg 工作号 可以将在后台的命令恢复到前台,如果只是用 fg 则将恢复最后放入的命令到前台;
    在这里插入图片描述
  • 将后台暂停的命令恢复为后台执行
    使用 bg 工作号 将后台暂停的命令恢复为后台执行;
    在这里插入图片描述

脱离终端运行命令

使用上面的 & 或是 ctrl+z 将命令放入后台后,如果用户关闭终端或是注销登陆后后台和其中的命令就都被关闭了。如果想要在这些情况下命令还能持续运行可以使用下面的一些方式:

  • nohup 命令 &
    nohup 命令的功能是让命令可以忽略 SIGHUP 信号运行,通常会以 nohup 命令 & 方式使用;
    使用该方式时原本要输出到前台的内容会被写入到当前目录下一个名为 nohup.out 的文件中;
    在这里插入图片描述上面演示中可以看到使用kill杀掉 nohup 放入后台的进程后其输出的nohup.out文件就不再更新了;
  • setsid 命令
    setsid后跟命令,命令直接就是在新会话中运行的,虽然信息还会在当前终端输出,但是并不在后台中,终端关闭了也不会停止;
    在这里插入图片描述
  • disown
    前面两种方式都只对新创建的命令有效,但对于已经在运行的命令就得用 disown 才能使其脱离终端运行了;
    disown 移除最近的后台命令;
    disown -a 移除所有后台命令;
    disown -r 移除所有正在运行的后台命令;
    disown -h 不移除后台命令,但是让它们不会收到SIGHUP信号;
    在这里插入图片描述

总结

本文中讲的后台运行命令与脱离终端运行命令只是一些最基础的方法,实际上linux中还有一些非常强大且好用的工具可以实现这些功能,且远远比上面的方法好用。最常见的工具比如 screentmux ,这些工具将在后面单独进行介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值