首页
学习
活动
专区
工具
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.4K40

大数据技术之_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.7K30

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

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

5.4K60

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进程

4K10

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进程

97110

教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

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

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

5.6K20

一次渗透妹子电脑开摄像头全过程

运行存储在文件命令     run                       执行一个抄表器脚本或Post模块。     ...pgrep         按名称过滤进程     pkill         按名称终止进程     ps            列出正在运行进程     reboot        重新启动远程计算机...以另一个用户身份生成一个会话 spawnto                          设置可执行文件以将进程生成到 spawnu                           在另一个进程下生成一个会话...ssh                              使用SSH在主机上生成一个SSH会话。...sshkey                           使用SSH在主机上生成一个SSH会话

2.3K10

《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

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.8K30

Linux 守护进程|应急响应

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

3.8K30

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.7K20

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

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

1.8K10

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

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

1.4K20

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

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

9110

如何在远程服务器上运行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

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一部分。

2.1K21

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

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

1.8K20
领券