解决shell中ssh调用远程执行后台执行nohup,出现卡死状况,无法退出继续执行

本文探讨了如何避免通过SSH远程执行nohup脚本时的日志卡死问题,建议将日志重定向至/dev/null或自定义文件,确保脚本正常运行并提供解决方法和实践建议。

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

1.后台执行某个shell脚本经常喜欢使用nohup,可以常见nohup sh …sh &一般会有相应日志重定向信息的提醒,类似如下:
在这里插入图片描述

2.而ssh远程执行时需注意,输入日志重定向nohup.out信息类似于打开了一个终端,一直卡死不退出,特别是脚本中加入while 等循环的时候,
在这里插入图片描述

3.建议在远程ssh调用nohup后台执行时,将日志输出提醒重定向到/dev/null或者重定向到自定义的相关文件中,保证shell程序正常运行。
在这里插入图片描述

### 使用 Ansible 远程调用后台程序 #### 配置主机文件 为了实现远程调用,首先需要配置`hosts`文件来指定目标机器的信息。这可以通过编辑`/etc/ansible/hosts`或创建一个新的库存文件完成。 对于特定的目标服务器,可以按照如下格式设置: ```ini [backend_servers] 172.25.70.1 ansible_ssh_user="root" ansible_ssh_pass="redhat" ``` 此配置指定了IP地址为`172.25.70.1`的服务器作为管理对象,并设置了登录所需的用户名和密码[^2]。 #### 调用后台进程的方式 ##### 方法一:使用 `command` 或 `shell` 模块执行命令 当希望启动一个后台服务时,可以直接利用`shell`模块发送相应的启动指令给远端计算机。例如,如果要启动MySQL数据库,则可采用下面的形式: ```bash ansible backend_servers -m shell -a '/usr/bin/nohup /path/to/mysql/start.sh >/dev/null 2>&1 &' ``` 这里采用了`nohup`工具配合重定向操作符确保即使SSH连接断开也不会影响到正在运行的服务;同时加上`&`符号让该命令后台模式运行[^3]。 ##### 方法二:借助 `service` 或 `systemd` 模块控制服务状态 更推荐的做法是通过Ansible内置的服务管理模块来进行更加稳定可靠的处理。比如想要开启并启用某个名为`my_service`的服务,在Playbook中应该这样写: ```yaml --- - name: Ensure my_service is running and enabled on boot hosts: backend_servers become: yes tasks: - name: Start and enable the service using systemd service: name: my_service state: started enabled: true ``` 这种方法不仅能够保证服务正常启动,而且还可以将其设为开机自启项,从而提高了系统的健壮性和自动化程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值