首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法终止由bash脚本中的另一个ssh会话启动的进程

在bash脚本中,如果一个进程是由另一个ssh会话启动的,想要终止该进程可能会比较困难。这是因为ssh会话的运行环境和脚本所在的环境是相互独立的,无法直接通过脚本来控制ssh会话中的进程。

然而,可以通过一些方法来解决这个问题。以下是一些可能的解决方案:

  1. 使用kill命令:可以尝试使用kill命令来终止进程。首先,通过ps命令或者pgrep命令查找到要终止的进程的PID(进程ID),然后使用kill命令发送SIGTERM信号给该进程。例如,假设要终止PID为12345的进程,可以使用以下命令:kill 12345。如果进程不响应SIGTERM信号,可以尝试使用kill -9命令发送SIGKILL信号,强制终止进程。
  2. 使用pkill命令:pkill命令可以根据进程名或者其他属性来查找并终止进程。例如,可以使用以下命令终止名为"process_name"的进程:pkill process_name。
  3. 使用ssh的ControlMaster功能:如果你在ssh会话中使用了ControlMaster功能,可以通过关闭ControlMaster连接来终止ssh会话中的进程。可以使用以下命令关闭ControlMaster连接:ssh -O exit user@host。
  4. 使用tmux或者screen:如果你在ssh会话中使用了tmux或者screen等终端复用工具,可以通过detach或者kill会话来终止进程。具体的命令取决于使用的终端复用工具。

需要注意的是,以上方法可能并不适用于所有情况,具体的解决方案可能因环境和情况而异。在实际应用中,可以根据具体的需求和情况选择合适的方法来终止由bash脚本中的另一个ssh会话启动的进程。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云服务器SSH密钥:https://cloud.tencent.com/document/product/213/6090
  • 云服务器安全组:https://cloud.tencent.com/document/product/213/12452
  • 云服务器弹性IP:https://cloud.tencent.com/document/product/213/5733
  • 云服务器监控:https://cloud.tencent.com/document/product/213/4938
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux 后台运行进程:& , nohup

但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。 “+”代表最近的一个任务(当前任务),“-”代表之前的任务。...如果将他们写到 .sh 脚本中,然后执行脚本,是显示不出来的 比如执行下面这个脚本后,jobs 显示不出来: #!...关闭中断后,在另一个终端jobs已无法看到后台跑得程序了,此时利用ps(进程查看命令) ps -aux | grep "test.sh" #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序...如果会话期首进程终止,则该信号发送到该会话期前台进程组。 一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。...简而言之:就是ssh 打开以后,bash等都是他的子程序,一旦ssh关闭,系统将所有相关进程杀掉!!

4.8K40

大数据技术之_07_Hadoop学习_HDFS_HA(高可用)_HA概述+HDFS-HA工作机制+HDFS-HA集群配置+YARN-HA配置+HDFS Federation(联邦) 架构设计

HA的自动故障转移依赖于ZooKeeper的以下功能: 1)故障检测:集群中的每个NameNode在ZooKeeper中维护了一个持久会话,如果机器崩溃,ZooKeeper中的会话将终止,ZooKeeper...ZKFC是自动故障转移中的另一个新组件,是ZooKeeper的客户端,也监视和管理NameNode的状态。...如果该节点崩溃,冻结或进入不健康状态,健康监测器标识该节点为非健康的。 2)ZooKeeper会话管理:当本地NameNode是健康的,ZKFC保持一个在ZooKeeper中打开的会话。...如果本地NameNode处于active状态,ZKFC也保持一个特殊的`znode锁`,该锁使用了ZooKeeper对`短暂节点`的支持,如果会话终止,锁节点将自动删除。... hadoop-2.7.2]$ sbin/stop-dfs.sh  (2)启动Zookeeper集群:(使用自定义编写的shell脚本,脚本文件放在/home/atguigu/bin/目录下) [atguigu

1.8K30
  • CobaltStrike团体服务器部署并后台运行

    我把团队服务器放在ECS上,出现了两个问题:1.客户端无法连接到团队服务器;2.SSH连接ECS,当关闭SSH后发现服务端进程也关闭了。 今天就这两个问题来解决。...第一个问题,无法连接团队服务器,首先查看teamserver服务是否正常启动! ....在Linux/Unix中,有这样几个概念: 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。...其余进程组称为后台进程组。 根据POSIX.1定义: 挂断信号(SIGHUP)默认的动作是终止程序。 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。...简而言之:就是ssh 打开以后,bash等都是他的子程序,一旦ssh关闭,系统将所有相关进程杀掉!!

    5.6K60

    Linux - 请允许我静静地后台运行

    这是因为用户注销或者网络断开时,SIGHUP信号会被发送到会话所属的子进程,而此 SIGHUP 的默认处理方式是终止收到该信号的进程。所以若程序中没有捕捉该信号,当终端关闭后,会话所属进程就会退出。...setsid setsid 是另一个让进程在后台执行的命令,它的作用是让进程打开一个新的会话并运行进程,使用方式为 setsid command。...而在 shell 脚本中,我们会发现运行 setsid 的进程会一直阻塞住,直到 command 进程执行结束。...而在 shell 脚本内,setsid 不是进程组长,它不会 fork() 子进程,而是由 bash 来fork() 一个子进程,而 bash 会 wait() 子进程,所以表现得像 setsid 在...参考: setsid为什么会在脚本中阻塞-StackoOerflow Linux 进程、进程组、会话周期、控制终端

    1.7K50

    Tomcat进程意外退出,元凶居然是他...

    那就只剩下Signal的情况了;经过一番排查后,发现每次tomcat意外退出的时间与ssh会话结束的时间正好吻合。...这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...这是一个有趣的现象,catalina.sh start方式启动的tomcat会把java进程挂到init(进程id为1)的父进程下,已经与当前test.sh进程脱离了父子关系,也与ssh进程没有关系,为什么关闭...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...回到tomcat的例子,catalina.sh脚本通过start参数启动的时候,就是以非交互方式后台启动,java进程也被shell设置了忽略SIGINT信号,因此在ctrl-c结束test.sh进程时

    4.1K10

    教Linux运维人员怎样使用screen

    一、分析,意外关闭终端程序挂掉的原因 Linux/Unix中,几个相关概念: 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。...其余进程组称为后台进程组。 根据POSIX.1定义:挂断信号(SIGHUP)默认的动作是终止程序。当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。...如果会话期首进程终止,则该信号发送到该会话期前台进程组。一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。...[root@tivf09 root]# top 在另一个终端窗口,找到top的进程ID为5180,其父进程ID为5128,即登录shell。...Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

    1.9K00

    Tomcat 进程意外突崩,元凶居然是它...

    那就只剩下Signal的情况了;经过一番排查后,发现每次tomcat意外退出的时间与ssh会话结束的时间正好吻合。...这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。...这是一个有趣的现象,catalina.sh start方式启动的tomcat会把java进程挂到init(进程id为1)的父进程下,已经与当前test.sh进程脱离了父子关系,也与ssh进程没有关系,为什么关闭...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...回到tomcat的例子,catalina.sh脚本通过start参数启动的时候,就是以非交互方式后台启动,java进程也被shell设置了忽略SIGINT信号,因此在ctrl-c结束test.sh进程时

    1.1K10

    nohup 命令 解决 SSH关闭窗口,程序也中断的问题!

    会话期(session): 一个或多个进程组的集合,有唯一一个会话期首进程(session leader). 会话期ID为首进程的ID....当前与终端交互的进程称为前台进程组. 其余进程组称为后台进程组. 根据POSIX.1定义: 挂断信号(SIGHUP)默认的动作是终止程序。...解释 当终端接口检测到网络连接断开, 将挂断信号发送给控制进程(会话期首进程). 如果会话期首进程终止,则该信号发送到该会话期前台进程组....简而言之: 就是 ssh 打开以后, bash等都是他的子程序, 一旦ssh关闭, 系统将所有相关进程杀掉!! 导致一旦ssh关闭, 执行中的任务就取消了....只要是ssh 打开执行的一般命令,不是守护程序,无论加不加&,一旦关闭ssh,系统就会用SIGHUP终止.

    6.3K20

    Linux screen 命令

    窗口列表的样子一般是这样: 0$ bash 1-$ bash 2*$ bash 这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。...另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。...如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。...但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。...关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作: screen -S sandy -X screen ping www.baidu.com 这个命令在一个叫做

    1.9K30

    Linux 守护进程|应急响应

    大家都知道,此时我们启动了一个程序 ping ,并且创建了一个进程,我们再开一个终端ssh连接这个服务器看一下 ?...session,每个session都是由一个或者多个进程组组成的,每个进程组称为 job,这里job不是任务,而叫作业 从描述中可以看出,session管理的范围要比进程组大,打开一个终端,你执行100...不受任何终端控制这个定义似乎有些模糊,所以我试图去找到一些限定条件,大部分人是这样说的: 随系统启动而启动 父进程是init,也就是ppid为1 在后台运行 进程名字通常以字母 d 结束 ps显示中终端名设置为问号...之所以要做这一步是因为下面两个原因: 假设daemon是从命令行启动的,父进程的终止会被shell发现,shell在发现之后会显示出另一个shell提示符并让子进程继续在后台运行。...这样就确保了子进程不会成为会话组长,因此根据System V中获取终端的规则,进程永远不会重新请求一个控制终端。(多一个fork()调用不会带来任何坏处。)

    3.9K30

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    停止进程  9    SIGKILL    无条件终止进程 15    SIGTERM   尽可能终止进程 …… 默认情况下,bash shell会忽略收到的任何SIGOUT(3)和SIGTERM(15...在终端会话中使用后台进程要注意,ps命令的输出中,每一个后台进程都和终端会话(pts/0)终端联系在一起。如果终端会话退出,那么后台进程也会退出。...16.3 在非控制台下运行脚本 需求:在终端启动脚本,让脚本一直运行到结束,即使退出了终端会话。 nohup命令可以做到。它运行了另外一个命令来阻断所有发送给该进程的SIGHUP信号。...在linux系统中,由shell启动的所有进程的调度优先级默认都是相同的, 调度优先级是个整数值(-20 -- +19)。 -20是最高优先级,+19是最低优先级。...anacron不会处理执行时间需求小于一天的脚本 16.6.3 使用新的shell启动脚本 如果每次运行脚本的时候都能够启动一个新的bash shell,将会非常的方便。

    3K61

    CentOS中环境变量和配置文件

    即允许在内存中存储数据,使得在程序或shell中运行的脚本能够访问它们。...在bash shell中,环境变量分为两类: 全局变量 局部变量 全局环境变量 全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的shell可见。...COLUMNS=165 用户定义变量 一旦启动了bash shell,就能创建在这个shell进程内可见的局部变量。...该进程创建的子shell无法读取父shell的局部变量。 [root@dev shell]# sh a.sh 2 22 2 [root@dev shell]# cat a.sh #!...这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有在脚本中设置的变量将成为当前Shell的一部分。

    1.8K20

    linux基础命令介绍九:进程与内存

    像一系列相关进程可以合并为进程组一样,一系列进程组也可以合并成一个会话session。会话是由其中的进程建立的,该进程叫做会话的首进程(session leader)。...会话首进程的PID即为此会话的SID(session ID)。每个会话都起始于用户登录,终止于用户退出。会话中的每个进程组称为一个工作(job)。...会话可以有一个进程组成为会话的前台工作(foreground),而其他的进程组是后台工作(background)。...每个会话都关联到一个控制终端control terminal,当会话终止时(用户退出终端),系统会发送终止信号(SIGHUP)给会话中的所有进程组,进程对此信号的默认处理方式为终止进程。...如在一个终端启动进程sleep 300,在另一个终端查看并使用信号SIGKILL将其终止: [root@centos7 ~]# sleep 300 #此时会一直等待sleep执行完毕 #在另一个终端中

    1.9K10

    进程组、会话、控制终端概念,如何创建守护进程?

    生命周期: 守护进程会长时间运行,常常在系统启动时就开始运行,直到系统关闭时才终止。 守护进程不依赖于终端 从终端开始运行的进程都会依附于这个终端,这个终端称为这些进程的控制终端。...启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 2. 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。...会话 一般一个用户登录后新建一个会话,每个会话也有一个ID来标识(SID)。登录后的第一个进程叫做会话领头进程(session leader),通常是一个shell/bash。...在Linux中,每当系统发现一个孤儿进程,就会自动由1号进程收养。原先的子进程就会变成init进程的子进程。 2. 在子进程中创建新会话 setsid()函数的作用。...这些被打开的文件可能永远不会被守护进程读或写,但它们一样消耗系统资源,而且可能导致所在的文件系统无法被卸载。

    1.5K20

    如何在远程服务器上运行Jupyter Notebooks?

    您甚至可以在笔记本中设置实验,并使用jupyter nbconvert将笔记本导出到脚本中——以编写您的“notebook.ipynb”脚本。...最后,我在ssh命令中添加了-f标志,以将进程推送到后台,并在前面加上nohup命令,使进程的所有输出保持静默,以便您可以继续使用终端窗口。您可以在这里阅读有关thenohup命令的更多信息。...但是,作为一种解决方法,您可以使用以下命令来终止jupyter进程: 1ssh username:password@remote_server_ip "pkill -u username jupyter..." 其中-u用户名表示只有由用户名启动的Jupyter进程应该被终止。...总结 在这篇文章中,我向您展示了如何使用bash命令在远程服务器上启动、访问和停止Jupyter Notebook,并展示了如何创建bash别名来简化操作。

    3.9K20

    如何在Bash脚本中使用expect来为SSH命令提供密码

    问题 我正尝试在 Bash 脚本中使用 Expect 来提供 SSH 密码。密码输入这部分工作正常,但我并没有像预期那样进入 SSH 会话,而是直接回到了 Bash 环境中。 我的脚本如下: #!...会话后,再返回到我的 Bash 脚本继续执行。...我之所以先使用 Bash 脚本再调用 Expect,是因为我需要通过一个菜单来选择要连接的单元 / 设备。 回答 混合使用 Bash 和 Expect 可能不是达到期望效果的最佳方式。...但是从安全角度看,这非常危险 —— 命令行参数可能被系统上的任何其他进程读取。...虽然 sshpass 有可能覆盖这些参数,但在它启动并能够执行覆盖之前,存在一个时间段,此时密码可被任何进程查看,这是极大的安全隐患。强烈建议不要将这种形式的脚本用在生产环境上。

    14110

    登录Shell与非登录Shell之间的区别

    回答 登录shell是你登录进行交互式会话时,以你的用户ID执行的第一个进程。...登录进程告诉shell以登录shell的方式运行,遵循一个惯例:将参数0(通常是shell可执行文件的名称)加上一个-字符作为前缀(例如-bash,而正常情况下是bash)。...登录Shell是用户登录系统后启动的第一个进程。...•非登录Shell:当你在已经存在的会话中打开一个新的终端(例如在图形界面中打开一个新的终端窗口、在screen或tmux会话中打开一个新的窗口、在Emacs的终端缓冲区中打开一个新的Shell等)时,...•非登录Shell:用于执行特定的命令或脚本,或者在已经存在的会话中打开新的Shell实例。

    15010

    【小家运维】达到Linux第三阶段的常用命令笔记记录—Part Ⅲ

    当终端接口检测到网络连接断开时,会给给控制进程(会话期首进程)发送一个挂断信号(终止程序的信号) 如果会话期首进程终止,则该信号发送到该会话期前台进程组,从而导致进程的停止 因此当网络断开或终端窗口关闭后...只要再次登录到主机上执行screen -r pid/名称就可以恢复会话的运行 它是什么? GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。...),fg 将进程搬到前台运行(Foreground) kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。...source命令是bash shell的内置命令;点命令(.)...那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面,这也就是不用重启的原因,可以立即生效~~~ source 作用在本shell程序中执行,不启动子shell,所以可以影响脚本的父shell

    1.9K20

    试一试这百个超有用的Linux命令行使用技巧

    了解SSH,基本的无密码验证方式。 例如通过ssh-agent, ssh-add等。 平时都使用如下脚本完成无密码验证,省事省力。...可以这样使用touch /tmp/{foo,bar,baz} {$1-$9} 执行shell脚本时的命令行参数 $0 正在执行的命令名称 $# 当前启动的命令中传入的参数个数 $上一条命令的执行返回值。...$$ 该shell的进程号。 $* 从$1开始,启动该shell脚本的所有参数。...lsof, netstat -lntp 查询当前什么进程在监听什么端口。 set 在bash脚本中, 使用set -x获得debug输出,使用set -e获得错误输出。...man ascii 获得一个好用的ASCII表格,包含10进制和16进制的值。 screen,dtach 在远程ssh绘画中,使用这两个命令可以保存你的会话,避免因为网络问题导致中断。

    1K70
    领券