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

使用bash在ssh上启动进程,然后在sigint上将其杀死

使用bash在SSH上启动进程,然后在SIGINT上将其杀死的方法如下:

  1. 首先,通过SSH连接到远程服务器。
代码语言:txt
复制
ssh user@remote_host
  1. 在远程服务器上,启动一个进程,例如运行一个Python脚本。
代码语言:txt
复制
python my_script.py &

这里,&符号表示将进程放入后台运行。

  1. 获取刚刚启动的进程的进程ID(PID)。
代码语言:txt
复制
ps aux | grep my_script.py

在输出中找到进程的PID,通常是第二列。

  1. 使用trap命令捕获SIGINT信号(通常是通过Ctrl+C触发),并在捕获到信号时杀死进程。
代码语言:bash
复制
#!/bin/bash

# 启动进程并获取PID
python my_script.py &
pid=$!

# 捕获SIGINT信号并杀死进程
trap "kill -9 $pid; exit" INT

# 等待进程结束
wait $pid

将上述脚本保存为run_and_kill.sh,然后在远程服务器上运行它。

代码语言:txt
复制
bash run_and_kill.sh

现在,当你按下Ctrl+C时,脚本将捕获SIGINT信号并杀死后台运行的进程。

这种方法可以用于任何类型的进程,只需将python my_script.py替换为要运行的命令。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 Fedora 上使用 SSH 端口转发

对于 HTTP 非安全连接,Web 服务器通常要求在主机系统上使用端口 80,对于 HTTPS 安全连接通常要求使用 443。...ssh 会话准备就绪后,将其保持打开状态,然后可以在浏览器中键入 http://localhost:8000 来查看你的 Web 应用。现在,系统之间的流量可以通过 ssh 隧道安全地传输!...因此,即使你无法 ssh 到实际的 db.example.com 主机,你也可以使用此命令将其转发: $ ssh-L 3306:db.example.com:3306 remote.example.com...现在,你可以在 localhost 上运行 MariaDB 命令,而实际上是在使用 db.example.com 主机。...有关更多信息,请在手册页中搜索 PermitOpen 来配置 sshd 守护进程: $ man sshd_config 最后,请记住,只有在 ssh 会话处于打开状态时才会端口转发。

84410

在Windows上使用PuTTY进行SSH连接

SSH的默认端口是22。如果远程服务器的SSH守护程序在另一个端口上运行,则需要在“ 会话”类别中指定它。 单击“ 打开”以启动SSH会话。...使用PuTTY进行端口转发(SSH隧道) SSH隧道允许您通过安全通道访问在远程服务器上运行的网络服务。如果您要访问的服务不通过SSL运行,或者您不希望允许公众访问它,则此功能非常有用。...例如,您可以使用隧道来安全地访问在远程服务器上运行的MySQL服务器。 为此: 在PuTTY的配置窗口中,转到“ 连接”类别。 转到SSH,然后转到隧道。 在源端口字段中输入3306。...您与远程MySQL服务器的连接将通过SSH加密,允许您访问数据库而无需在公共IP上运行MySQL。 通过SSH运行远程图形应用程序 PuTTY可以安全地运行托管在远程Linux服务器上的图形应用程序。...在PuTTY的配置窗口中,确保在会话类别中输入远程服务器的主机名或IP以及正确的端口。 在Connection类别中,转到SSH,然后转到X11。 选中启用X11转发复选框。

21.5K20
  • 在GitLab CI CD上使用SSH密钥

    亚搏体育app文件 亚搏体育app CI / CD 在GitLab CI / CD上使用SSH密钥 在GitLab CI / CD上使用SSH密钥 上次更新时间:2017-12-13•...SSH密钥在以下情况下很有用: 您想签出内部子模块 您想使用包管理器(例如Bundler)下载私有包 您想要将应用程序部署到自己的服务器上,例如Heroku 您要执行从构建环境到远程服务器的SSH...将公共密钥复制到您想要访问的服务器上(通常在中 ~/.ssh/authorized_keys),或者 在访问私有GitLab存储库时将其添加为部署密钥。...完成后,尝试登录到远程服务器以接受指纹: ssh example.com 要访问GitLab.com上的存储库,可以使用git@gitlab.com。.../config' 示例项目 为了方便起见,我们建立了一个示例SSH项目,使用我们的公共 共享运行程序在GitLab.com上运行。

    2.6K10

    使用systemd在Boot上启动Linux服务

    它包括许多功能,包括用于启动和管理系统进程的引导系统。它目前是大多数Linux发行版的默认初始化系统。许多常用的软件工具(如SSH和Apache)都附带了systemd服务。...虽然在服务器上引导时有多种方法可以运行脚本或启动进程,但自定义systemd服务可以轻松启动,停止或重新启动脚本,并将其配置为在引导时自动启动。...systemd提供了使用标准化接口的优势,该接口在支持它的所有Linux发行版中都是一致的。 创建自定义systemd服务 创建服务将管理的脚本或可执行文件。..."; 7 sleep 30; 8 done 此脚本将记录初始化的时间,然后无限循环以保持服务运行。...可以使用标准systemd命令停止或重新启动该服务: sudo systemctl stop myservice sudo systemctl restart myservice 最后,使用enable

    1.9K50

    在 Linux 上使用 jps 命令检查 Java 进程

    image.png 系统上运行着诸多进程,通过 jps 命令能够快速有效识别 Java 进程。 在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统上运行进程最简单的方法。... 命令,并配合结果输出管道符进行 grep,从而查看系统上运行的 Java 进程,。...要想实现与 ps 命令类似的输出,可以使用 -v 选项。这很实用,这与 ps 相比,可以减少你的输入。

    2.8K20

    使用Termux在Android上运行SSH服务器

    借助出色的Termux终端仿真器应用程序,您可以在Android上运行SSH服务器。 以前,我使用SSHDroid来实现此目的,但是使用Termux更好,因为您可以使用包管理器工作。...sshd 您的ssh服务正在端口8022上运行,以下是测试命令 ssh localhost -p 8022 添加您的公钥 您无法在Termux中进行密码身份验证,因此需要将OpenSSH公钥放入~/...然后可以使用以下命令将其添加到~/.ssh/authorized_key中,注意这个命令在这里只是简单说明,并不是你就可以简单重定向到你Android手机,但是实际如果你要将你的id_rsa.pub放到...比如使用stf连接到Android手机 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 然后,您可以通过连接到ssh服务对其进行测试 ssh $IP -...OpenSSH 如果您使用的是OpenSSH(在Linux或Cygwin上),则可以直接使用它: ssh $IP -p 8022 希望将来Termux允许将sshd注册为适当的服务,它将在系统启动时自动启动

    4.5K20

    当你在 Linux 上启动一个进程时会发生什么?

    我们要做的是启动一个进程。我们已经在博客上讨论了很多关于系统调用的问题,每当你启动一个进程或者打开一个文件,这都是一个系统调用。...fork 和 exec Linux 上的 posix_spawn 是通过两个系统调用实现的,分别是 fork 和 exec(实际上是 execve),这些都是人们常常使用的。...尽管在 OS X 上,人们使用 posix_spawn,而 fork 和 exec 是不提倡的,但我们将讨论的是 Linux。 Linux 中的每个进程都存在于“进程树”中。...事实证明,有了 C 或 Python 的技能,你可以在几个小时内编写一个非常简单的 shell,像 bash 一样。(至少如果你旁边能有个人多少懂一点,如果没有的话用时会久一点。)...为何 fork 并非那么耗费资源(写入时复制) 你可能会问:“如果我有一个使用了 2GB 内存的进程,这是否意味着每次我启动一个子进程,所有 2 GB 的内存都要被复制一次?

    1.1K70

    研究如何使用IPCDump在Linux上跟踪进程间通信

    IPCDump IPCDump这款工具可以帮助广大研究人员在Linux操作系统上跟踪进程间通信(IPC)。...该工具有助于研究和调试多进程引用程序,而且还可以帮助了解操作系统通信过程中不同组件之间的关联。...IPCDump收集的大部分信息来自放置在内核中关键函数的kprobes和跟踪点上的BPF钩子。为此,IPCDump使用了gobpf,它可以为bcc框架提供Golang绑定功能。...功能介绍 支持管道和FIFO; 回环IPC; 信号(常规和实时); Unix流和数据图表; 基于伪终端的IPC; 基于进程PID或进程名的事件过滤器; 可读性高或JSON格式的输出数据; 工具要求&使用...4.15.0 已测试 未测试 5.4.0 未测试 已测试 5.8.0 未测试 已测试 工具构建 依赖组件 首先,我们需要安装Golang: snap install go --classic 接下来,在操作系统上安装好

    1.4K30

    在 Linux 上使用 kill 和 killall 命令来管理进程

    而另外一些程序可以派生出其他进程,比如说它会侦听某些事件的发生,然后对其做出响应。并且每个进程都需要一定的内存和处理能力。你运行的进程越多,所需的内存和 CPU 使用周期就越多。...在老式电脑(例如我使用了 7 年的笔记本电脑)或轻量级计算机(例如树莓派)上,如果你关注过后台运行的进程,就能充分利用你的系统。 你可以使用 ps 命令来查看正在运行的进程。...这就是为什么我喜欢先使用 ps -ef 命令来检查我正在运行的进程,然后针对要停止的命令的准确路径运行 killall。...在我作为 Unix 和 Linux 系统管理员的早期职业生涯中,杀死非法作业的能力是保持系统正常运行的关键。...在如今,你可能不需要亲手在 Linux 上的终止流氓进程,但是知道 kill 和 killall 能够在最终出现问题时为你提供帮助。 你也能寻找其他方式来管理进程。

    68020

    在Mac上使用ssh-key免密码登录服务器

    从很早之前开始,在搭建测试服务器的时候,就不停的谷歌怎么免密登录服务器,每次配置好免密登录后,到搭建新的服务器时,又忘记了具体的命令,所以决定把这个方法记下来,方便之后日后查找。...通常的来说,我们会使用 ssh user@host -p port这个命令,之后输入密码来登录服务器,才能ssh登录到服务器进行操作。...首先我们要在我们的mac上电脑上生成公钥和私钥,在终端中输入以下命令: cd ~/.ssh 首先进入~/.ssh目录,之后: ssh-keygen -t rsa 之后就可以一路回车,一般都不设置密码,即可在....ssh/authorized_keys 现在,我们就可以正常的在mac 终端中使用ssh来登录服务器了,无需输入密码。...我们可以在bash_profile中设置一个alias,更能方便登录服务器的操作。

    5K40

    使用SSH密钥在Git服务器上免密码提交代码

    本文将介绍如何在Git服务器上使用SSH密钥进行身份验证,替代每次输入账户密码的方式。 为什么选择SSH密钥?...相比于使用HTTP方式(每次提交都需要输入用户名和密码),SSH密钥提供了更高效和安全的验证机制。通过生成的公钥和私钥,SSH可以在不暴露密码的情况下实现加密通信,避免凭据泄露的风险。...生成SSH密钥 首先,需要在本地机器上生成一对SSH密钥对。如果已经有现成的SSH密钥,可以跳过此步骤。...将复制的公钥内容粘贴到 Key 框中,然后点击 Add SSH key。 3. 配置SSH使用Git仓库 在本地的Git仓库中,使用SSH URL替换原来的HTTPS URL。...可以通过以下命令更改远程仓库的URL: 先查看当前Git仓库的远程地址: git remote -v 如果远程仓库URL使用的是https://,则需要将其修改为ssh://。

    9300

    Java 在 Linux 上的守护进程:如何优雅地终止和管理自启动程序??

    摘要本文将围绕 如何在 Java 中管理 Linux 上的守护进程 展开,尤其重点探讨如何优雅地 kill 自启动程序。...通过源码解析、使用案例分享以及核心类方法介绍,帮助开发者了解如何在 Linux 上编写和管理 Java 守护进程,同时学习如何在不破坏系统或导致数据丢失的情况下安全终止这些进程。...在 Java 中,可以通过两种方式将程序作为守护进程运行:使用第三方工具(如 nohup 或 systemd)启动 Java 程序。编写 Java 代码,手动控制守护进程的生命周期。...编写一个简单的 Java 守护进程在 Java 中编写一个长期运行的守护进程通常包括以下几个步骤:启动一个后台线程处理主任务。使用控制机制来监听关闭信号。在程序退出前完成资源清理工作。...使用案例分享案例1:Web 服务守护进程管理小张开发了一个基于 Java 的 Web 服务,并将其部署在 Linux 服务器上作为守护进程运行。

    12421

    在Linux服务器上安装Web SSH--SSHwifty的部署和使用

    但是如果是官方Deepin镜像、Arch等客户端Linux,默认一般没有安装: # Debian sudo apt install openssh-server # 启动SSH进程 systemctl...start ssh.service # 开机启动SSH systemctl enable ssh.service 宝塔面板 安装宝塔面板,主要是方便配置域名解析和Nginx反向代理。...它可以部署在您的计算机或服务器上,以为任何兼容(标准)的Web浏览器提供SSH和Telnet访问接口。 [SSH Web] 通俗地说:安装SSHwifty可以实现Web端SSH控制服务器。...的配置文件内,添加以下两段,然后保存退出。...不过,Web SSH和Xshell这样的软件,在传输层上,Web SSH是没有Xshell、Terminal和Powershell直接使用SSH传输来得安全,如果对安全有极高要求,建议还是不要使用WebSSH

    10.9K121

    在 Windows 上使用 ConEmu 命令行终端打开多窗口启动 Redis 服务

    由于开发机器是 Windows 系统,每天启动计算机都需要重新开启 Redis 服务很麻烦。 于是计划写个简单的 batch 脚本,能在桌面点击脚本完成启动和连接 Redis 服务的功能。...batch 实现 基础知识 在 batch 脚本中输入使用的命令默认的都会打开系统自带的命令行工具(Win + R)如: 有一个 cd_redis.bat 脚本: :: 进入 Redis 安装目录 ::...version 1.0 :: @author huliuqing echo 'Enter in redis install directory...' cd E:\redis2.4.5 pause 使用...ConEmu 打开多个窗口并启动 Redis 服务 需要解决的问题是: 进入并启动 ConEmu 命令行程序 在 ConEmu 中运行命令 能够在一个 batch 脚本中开启多个窗口 最终的 batch

    3.4K20

    日拱一卒,量大管饱,MIT手把手教你配环境

    在我们的例子当中,当我们输入Ctrl-C时,shell会发送一个SIGINT信号给进程。 这里有一个使用Python来捕获SIGINT信号并且忽视它的例子,因为捕获了信号,所以不会导致程序停止。...我们需要使用kill命令发送这个信号,语法是kill -TERM 。 暂停和后台执行进程 信号除了杀死进程之外还能做一些其他的事情。比如SIGSTOP可以让一个进程暂停。...shell和框架 在 shell 工具和脚本那节课中我们已经介绍了 bash shell,因为它是目前最通用的 shell,大多数的系统都将其作为默认 shell。但是,它并不是唯一的选项。...在这个练习当当中,我们将会首先启动一个sleep 60 &的进程作为先导进程。一种方法是使用wait命令,试着先启动sleep命令,然后等到结束再执行一个ls命令。...然后使用sudo service sshd restart重启 ssh 服务器,然后重新尝试。 (附加题) 在虚拟机中安装 mosh 并启动连接。然后断开服务器/虚拟机的网络适配器。

    1.4K20
    领券