如何在后台运行Linux命令?

欢迎关注我的公众号

作者:JackTian
微信公众号:杰哥的IT之旅(ID:Jake_Internet)

通常情况下,在 Linux 终端中运行命令时,我们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,并且您也可以使用输入设备与其终端进行交互。

当一条命令执行需要很长时间才能完成,并且想同时运行其他命令怎么办呢?

  • 第一:启动新的 Shell 会话并在其中运行命令;
  • 第二:在后台运行命令;

后台进程是从终端启动并在后台运行,无需用户与其终端进行交互的进程及命令;

1、组合键及命令

以 httpd-2.2.17.tar.gz 压缩包为例,比如一个压缩包文件解压需在终端屏幕下解压很长时间,甚至要刷很长一段屏幕才能解压完毕,那么我们可以按下Ctrl+Z组合键,便可以暂停运行并隐藏到后台,将会返回一个停止序号,此时进程时暂停的,并不会继续运行。

输入bg命令即可继续将该任务在后台执行。

输入fg + 序号命令即可让进程返回到前台执行。

执行过程中,可以输入jobs命令来查看所有的后台任务了。

# tar -zxf httpd-2.2.17.tar.gz                             ## 解压 httpd 压缩包
^Z                                                         ## 按下 Ctrl+Z 组合键暂停
[1]+  Stopped                 tar -zxf httpd-2.2.17.tar.gz

# bg                                                       ## 输入 bg 命令,继续在后台运行
[1]+ tar -zxf httpd-2.2.17.tar.gz &

# jobs                                                     ## 查看所有的后台任务
[1]+  Done                    tar -zxf httpd-2.2.17.tar.gz

2、&

在执行命令后加&,使其在终端后台运行。

# ./yum_install.sh &

执行完如上命令,yum脚本便在后台运行,虽然在后台运行了,但输出的内容还是会在终端上进行显示的,那么我们可以采用将执行后的命令输出结果重定向到文件中。

# ./yum_install.sh >> 202001141411out.txt 2>&1 &

将执行的结果重定向到202001141411out.txt文件中,2>&1将标准错误重定向到标准输出,判断yum脚本文件执行成功没成功,我们只需查看202001141411out.txt文件即可;

如果出现脚本文件执行了一段时间,卡死,无法继续运行了,可以通过第一种方法:jobs命令

# jobs -l

或者使用ps命令

# ps -aux | grep yum_install.sh

3、nohup

&:可以使命令在后台运行,当关闭控制台时,进程也将会被杀死,如果希望关闭控制台后,进程依旧运行,这时则需要使用nohup。

nohup:no hang up,不挂起的意思。

在执行命令最前面使用nohup,当关闭控制台时,进程依旧会在后台继续运行。

# nohup ./yum_install.sh &

如上nohup执行方式,当判断该脚本是否执行完毕,可执行命令ps -aux | grep yum_install.sh查看;

除此之外,我们可以将运行结果输出到nohup.log文件中,当没有指定输出重定向时,日志文件会默认输出到nohup.out文件;

# nohup ./yum_install.sh > nohup.log 2>&1 &

今天的推荐不知道大家喜欢吗?如果你喜欢,请在文章底部留言和点赞,以表示对我的支持,你们的留言和点赞是我持续更新的动力哦,感谢大家!

1、点个赞,让更多的人看到这篇文章,顺便激励下我,嘻嘻。

2、关注我的原创微信公众号「杰哥的IT之旅」,专注于IT技术干货文章,以及不定期的分享学习资料,实用工具,面试经验等,当然了还有内推机会哦,期待你的关注!
在这里插入图片描述

<think>我们参考用户的问题:用户想查找在Linux系统中让cat命令后台运行的方法。 根据引用[2]和引用[3],我们可以知道有两种常见的方法: 1. 使用 `&` 符号:在命令末尾加上 `&` 可以让命令后台运行。 2. 使用 `nohup` 命令:可以防止用户退出终端导致命令停止,并且将输出重定向到文件。 但是,需要注意的是,cat命令通常用于查看文件,如果只是简单地让cat在后台运行,可能会立即结束(因为cat读取文件并输出到标准输出,然后结束)。所以,一般我们不会单独让cat在后台运行,除非我们想要持续监控一个文件(比如结合重定向)或者与其他命令组合(如管道)。 不过,用户明确要求让cat命令后台运行,我们可以给出两种方法: 方法一:使用 `&` 命令格式:`cat 文件名 &` 这样cat命令会在后台运行,但标准输出会显示在终端。如果终端关闭,该命令也会终止。 方法二:使用 `nohup` 和 `&` (适用于需要退出终端的情况) 命令格式:`nohup cat 文件名 &` 这样,cat命令会在后台运行,并且即使终端关闭,命令也会继续运行(直到完成)。默认情况下,输出会被重定向到当前目录下的nohup.out文件中。 另外,根据引用[4],我们还可以使用作业控制命令(如fg, bg)来管理后台进程。 但是,注意cat命令的特性:它读取文件并输出内容,然后退出。所以,如果文件很小,它很快会结束;如果文件很大,它会持续一段时间。如果用户想要持续监控一个动态增长的文件(如日志文件),那么cat并不适合,应该使用tail -f。 因此,在回答中我们需要提醒用户注意cat命令的适用场景。 根据上述分析,我们给出答案: </think>在 Linux 系统中,让 `cat` 命令后台运行有三种常用方法,根据需求选择不同的方案: ### 1. 基础后台运行(终端不关闭时有效) **命令格式** `cat 文件名 &` **说明**: 直接在命令末尾添加 `&` 符号,例如: ```bash cat largefile.log & ``` **特点**: - 立即返回控制权,显示后台任务 ID(如 `[1] 12345`) - 输出内容仍会显示在当前终端 - **终端关闭时任务自动终止** [^2] ### 2. 持久化后台运行(终端关闭仍持续) **命令格式** `nohup cat 文件名 > 输出文件 2>&1 &` **实例**: ```bash nohup cat access.log > output.txt 2>&1 & ``` **特点**: - `nohup` 忽略挂断信号,终端退出不影响任务 - 输出重定向到文件(`output.txt`) - `2>&1` 将错误输出合并到标准输出 - 自动生成 `nohup.out` 作为默认日志文件 [^3] ### 3. 后台任务管理(暂停/恢复场景) **步骤**: ```bash cat largefile.txt # 前台启动 Ctrl + Z # 暂停任务 bg %1 # 将暂停的任务转为后台运行 ``` **管理命令**: - `jobs`:查看后台任务列表 - `fg %N`:将后台任务调回前台(N 为任务编号) - `kill %N`:终止指定后台任务 [^4] --- ### ️ 重要注意事项 1. **`cat` 的适用性**: `cat` 会一次性读取整个文件,**仅适合静态文件**。若需监控实时更新的文件(如日志),应改用 `tail -f`: ```bash nohup tail -f live.log > output.txt & ``` 2. **资源占用**: 大文件可能导致高内存占用,建议通过管道限制输出: ```bash nohup cat hugefile | head -n 1000 > sample.txt & ``` 3. **输出处理**: 无重定向时,`nohup` 默认保存输出到 `nohup.out`,可用 `>>` 追加日志: ```bash nohup cat file.txt >> all_logs.log 2>&1 & ``` > 💡 提示:结合 `watch` 可定时执行后台任务(如每 30 秒扫描文件): > `nohup watch -n 30 "cat status.txt" &` --- ### 相关问题 1. 如何查看 Linux 后台运行的任务列表? 2. `nohup` 和 `&` 在功能上有哪些本质区别? 3. 如何让后台任务在系统重启后仍自动运行? 4. 为什么 `cat` 不适合监控动态变化的日志文件?应使用什么替代命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值