linux命令-后台运行

要使命令再后台一直运行的话 需要用到 nohup命令

 nohup会不挂断的运行,但不是后台运行  需要使用 & 才能永久再后台运行

nohup会将运行日志写入到nohup.out文件中,但是我并不想让他写入这个文件中,所以可以指定文件

将日志写入ass.log如:

nohup node internalTask.js > ass.log &

操作系统中有三个常用的流:
  0:标准输入流 stdin
  1:标准输出流 stdout
  2:标准错误流 stderr

一般用> ass.log 实际是1 > ass.log 的省略用法 ;   < ass.log 。实际是 0<ass.log 的省略用法

用法:

nohup node internalTask.js > ass.log  2>&1 &

2>&1的意思 

把标准错误流(2)重定向到标准输出流(1) ,而1是输出到ass.log文件中 所以是1 +2 都导入到ass.log中 ;至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的. 

& :在后台运行

 参考:https://www.cnblogs.com/jinxiao-pu/p/9131057.html

            https://www.cnblogs.com/keystone/p/11159665.html

<think>嗯,用户问的是如何在Linux系统中将system命令设置为后台运行。首先,我需要明确用户的问题到底是在问什么。他们可能是在运行某个命令时,希望这个命令后台执行,这样他们可以继续使用终端而不需要等待命令完成。常见的场景可能是启动一个长时间运行的服务或者脚本。 首先,我应该回忆Linux后台运行命令的基本方法。通常,在命令的末尾加上&符号可以让命令后台运行。例如,`command &`。这样终端会立即返回,而命令后台执行,同时会显示作业号和进程ID。这时候用户可能还需要知道如何管理这些后台作业,比如用jobs命令查看,或者用fg/bg来切换前后台。 然后,用户提到的“system命令”可能是指systemd服务,或者是普通的系统命令。如果是systemd相关的,可能需要用systemctl命令来管理服务,比如`systemctl start service_name`,但用户的问题更倾向于常规命令后台执行,而不是系统服务的管理。 接下来,我需要考虑用户是否需要让命令后台运行且忽略挂断信号,这样即使终端关闭,命令也不会终止。这时候就需要使用nohup命令,比如`nohup command &`。nohup会默认将输出重定向到nohup.out文件,用户可能也需要知道如何自定义输出文件,例如`nohup command > output.log 2>&1 &`。 另外,用户可能对如何查看后台进程的日志感兴趣,或者如何终止这些进程。这时候需要介绍ps、kill等命令。比如用`ps aux | grep command`查找进程ID,然后用`kill PID`束进程。 还有可能用户希望命令后台运行且即使退出终端后仍然保持运行,这时候可能需要合使用disown或者screen/tmux工具。比如在命令后面加上`& disown`,或者使用screen会话来保持进程运行。 然后,我需要参考用户提供的引用内容,看看有没有相关的信息。比如引用[2]提到了systemd的socket配置,引用[3]提到了在终端中使用的一些命令如nl、sort、fold等,引用[4]是关于如何编译运行Java程序的。不过这些引用可能和当前问题关联不大,但可能需要提到systemd相关的后台服务管理,比如使用systemctl enable来设置服务开机启动,但用户的问题更偏向于临时后台运行命令,而不是设置服务。 最后,用户可能需要一些具体的例子,比如如何实际应用这些命令,或者如何处理输出和错误信息,以及如何检查后台任务的状态。需要给出清晰的步骤和示例,确保用户能够按照指导操作。同时,生成的相关问题可能涉及如何管理多个后台任务,如何查看后台任务的输出,如何让任务在断开终端后继续运行等。</think>在Linux系统中将命令设置为后台运行主要有以下几种实现方式,按使用场景分类说明: ### 一、基础后台运行 1. **使用`&`符号** ```bash command & ``` - 立即返回进程ID(PID)和作业号 - 标准输出仍会显示在终端 - 示例:`sleep 60 &`[^3] 2. **查看后台作业** ```bash jobs -l ``` ### 二、持久化后台运行 1. **nohup组合命令** ```bash nohup command > output.log 2>&1 & ``` - `nohup`忽略挂断信号(SIGHUP) - 输出默认重定向到nohup.log - 推荐使用完整重定向格式[^1] 2. **disown命令** ```bash command & disown ``` - 将已有作业从shell作业表中移除 - 配合`&`使用效果更佳 ### 三、高级会话管理 1. **screen工具** ```bash screen -S session_name command Ctrl+a d # 分离会话 screen -r session_name # 恢复会话 ``` 2. **tmux工具(推荐)** ```bash tmux new -s session_name command Ctrl+b d # 分离会话 tmux attach -t session_name # 恢复会话 ``` ### 四、系统服务管理(systemd) ```bash sudo systemctl start service_name sudo systemctl enable service_name # 设置开机启动[^2] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值