自学内容网 自学内容网

linux远程执行命令后中断联系使远程机独立运行

背景

  正常逻辑上通过网络远程在另外一台机器执行一个命令后,就跟本机没有关系了,但是事实上并不是这样的,当执行ssh 后,很多时候也会出现远程反馈信息的情况,换句话就是可以通过ssh实现远程执行调用。但是有些时候并不想在执行过程中建立这种联系,也就是客户机向远程服务机下达命令后,就不用管执行结果,断了连续,以至于不用一直等待,毕竟建立网络连接需要消耗资源。

disown

  linux 中bg fg kill wait disown suspend基本是一套的命令,其中的disown 命令是为了消除当前tty的用户建立的shell进程与执行命令的联系,但是后台依然能够查看执行的线程,像是换到后台执行。所以disown是不能断掉与远程的命令的联系。

kill

  解决想法是通过&使得命令到后台运行,然后通过kill断掉进程。这个时候有个疑问就是,断掉客户机的进程,会不会中断远程机的命令?通过以下实验证明,不会!!所以该方法可以实现断了远程执行的联系。

[root@node1 ~]# ssh node2 "sleep 100 &" &
[root@node1 ~]# ps -ef|grep 'sleep 100'
root      1661  1361  0 10:20 pts/0    00:00:00 ssh node2 sleep 100 &
[root@node1 ~]# jobs -l
[1]+  1661 Running                 ssh node2 "sleep 100 &" &
[root@node1 ~]# kill -9 1661
[root@node2 ~]# ps -aux|grep sleep
root      1690  0.0  0.0 108052   352 ?        S    10:20   0:00 sleep 100

原文地址:https://blog.csdn.net/LearnToPain/article/details/135987634

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!