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

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

有了这个线索之后,银时同学立刻看了一下对方测试环境的脚本,简化后如下: $ cat test.sh #!/bin/bash cd /data/server/tomcat/bin/ ....我们的推测是ssh窗口在关闭时,对当前交互的shell以及正在运行的test.sh等子进程发送某个退出的Signal,找了一台装有systemtap的机器来验证,所用的stap脚本是从涧泉同学那里copy...(11700)---test.sh(13285)---tail(13299) 经过内核组伯俞的协助,我们发现 a) 用 ctrl-c 终止当前test.sh进程时,系统events进程向 java 和...catalina.sh脚本里并没有使用start-stop-daemon之类的方式启动java进程,start参数的执行方式简化后脚本相当于: eval '"/pathofjdk/bin/java"'...回到tomcat的例子,catalina.sh脚本通过start参数启动的时候,就是以非交互方式后台启动,java进程也被shell设置了忽略SIGINT信号,因此在ctrl-c结束test.sh进程时

4.1K10

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

有了这个线索之后,银时同学立刻看了一下对方测试环境的脚本,简化后如下: $ cat test.sh #!/bin/bash cd /data/server/tomcat/bin/ ....我们的推测是ssh窗口在关闭时,对当前交互的shell以及正在运行的test.sh等子进程发送某个退出的Signal,找了一台装有systemtap的机器来验证,所用的stap脚本是从涧泉同学那里copy...(11700)---test.sh(13285)---tail(13299) 经过内核组伯俞的协助,我们发现 a) 用 ctrl-c 终止当前test.sh进程时,系统events进程向 java 和...catalina.sh脚本里并没有使用start-stop-daemon之类的方式启动java进程,start参数的执行方式简化后脚本相当于: eval '"/pathofjdk/bin/java"'...回到tomcat的例子,catalina.sh脚本通过start参数启动的时候,就是以非交互方式后台启动,java进程也被shell设置了忽略SIGINT信号,因此在ctrl-c结束test.sh进程时

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    实用 Linux 命令行使用技巧集锦

    $* 从$1开始,启动该shell脚本的所有参数。...可以实现并行执行任务,并可以分割输入文件, 指定多个节点同时运行命令等功能.详细的功能可以参考这个链接. pstree -p 打用进程树的得力工具 pgrep,pkill 使用名字查找进程,或者直接向指定名字的进程发送信号...—了解用户能发送给进程的一些信号。比如 kill -STOP [pid] ,让pid进程挂起。...cron 可以帮助你制定一些定时执行的计划任务。 Ctrl-S Ctrl-C 将一不小心需要大量输出文本时,依次输入这两个操作,比单纯的频繁按Ctrl-C能更快让程序终止。...使用shell完成此运算比用Python快3倍。 awk '{ x += $3 } END { print x }' shuf 该命令可以从将一个文件中的行混洗,或者从中随机选出一些行。

    1.5K80

    别人比你快?试一试这百个超有用的Linux命令行使用技巧

    可以这样使用touch /tmp/{foo,bar,baz} {$1-$9} 执行shell脚本时的命令行参数 $0 正在执行的命令名称 $# 当前启动的命令中传入的参数个数 $上一条命令的执行返回值。...$* 从$1开始,启动该shell脚本的所有参数。...可以实现并行执行任务,并可以分割输入文件, 指定多个节点同时运行命令等功能. pstree -p 打用进程树的得力工具 pgrep,pkill 使用名字查找进程,或者直接向指定名字的进程发送信号。...cron 可以帮助你制定一些定时执行的计划任务。 Ctrl-S Ctrl-C 将一不小心需要大量输出文本时,依次输入这两个操作, 比单纯的频繁按Ctrl-C能更快让程序终止。...使用shell完成此运算比用Python快3倍。 awk'{ x +=$3} END { print x }' shuf 该命令可以从将一个文件中的行混洗,或者从中随机选出一些行。

    1K70

    PolyShell:一款适用于Bash、Batch、PowerShell的polyglot

    工具介绍 PolyShell是一款功能强大的polyglot脚本,它可以同时适用于Bash、Windows Bash和PowerShell。...除此之外,PolyShell还可以使用类似USB Rubby Ducky和MalDuino这样的设备并通过输入注入来进行传递和发送。...; 2、运行Payload; 3、按下Ctrl-C,然后运行“exit”命令; 以输出注入的方式使用该脚本与脚本直接运行的使用方式有一些不同,当以单独脚本的方式运行时,一旦一种语言已经处理完成,那么Payload...组合键Ctrl-C可以让脚本退出读取循环,并确保在运行的过程中不会产生任何意外情况。 除此之外,如果直接将脚本代码粘贴到终端中运行的话,可能会出现运行失败的情况。...脚本工作机制 当我们尝试运行指定代码语言的命令时,该工具会尝试对命令进行解析,分析因素包括参数引用、重定向和注释等等。

    84920

    Shell脚本内建命令

    ,包括vi和emacs编辑器以及curses和man程序; 光标属性 在 UNIX shell 脚本中或在命令行中,移动光标或更改光标属性可能是非常有用的; 在向某一设备显示数据时,很多时候您并不希望看到光标...clear tput sgr0 tput rc #恢复光标到最后保存位置 WeiyiGeek.示例演示 ---- 0x01 shell 计算命令 描述:除了上面的declare命令可以计算数值外还有其他的一些命令如...) bc 命令 描述:bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc计算命令算术操作高级运算工具,它可以执行浮点运算和一些高级函数; 语法参数: bc(选项)(参数) #选项 -i...原来在shell中总是用数字来代表信号,而在实际开发中为了体现专业性应该使用信号的名字; 比如按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序..."-F function":在当前的shell环境中执行函数function,执行时,参数"$1"表示那个参数正在进行补全的命令名,参数"$2"表示补全的名称,参数"$3"表示补全的名称前面的单词,表示结束执行时从数组变量

    1.7K10

    【Linux】《how linux work》第二章 基本命令和目录层次结构(2)

    第4节可能有一些边缘用途,如果第6节能再大一点就更好了。如果你不是程序员,可能无法使用第3节,但是在阅读本书关于系统调用的更多内容后,你可能能够理解第2节的一些材料。...(一些shell有参数可以防止擦除。例如,在bash中输入set -C可以避免擦除。)...一些程序会省略这个标识信息,在编写shell脚本时可能会有些烦人,但这并不是什么大问题。 o 文件名 /dsafsda,它是一个更具体的信息。这个路径有问题。...In most cases, all you need to do is this:要终止一个进程,请使用 kill 命令向其发送一个信号。信号是内核向进程发送的一条消息。...and eventually end up with numerous suspended processes hanging around.Shell 还支持作业控制,这是一种通过使用各种按键和命令向程序发送

    15610

    第三十七章 : 奇珍异宝

    在我们 bash 学习旅程中的最后一站,我们将看一些零星的知识点。当然我们在之前的章节中已经涵盖了很多方面,但是还有许多 bash 特性我们没有涉及到。...其中大部分特性相当晦涩,主要对那些把 bash 集成到 Linux 发行版的程序有用处。然而还有一些特性,虽然不常用,但是对某些程序问题是很有帮助的。我们将在这里介绍它们。...行7-10:查看是否一个有效的目录名作为位置参数传递给程序。如果不是,就会显示一条使用信息,并且脚本退出,退出状态为1。...当用户试图通过按下 Ctrl-c 组合键终止脚本运行的时候,该程序的执行结果看起来像这样: [me@linuxbox ~]$ trap-demo Iteration 1 of 5 Iteration 2...web 浏览器作为客户端,向服务器发出请求,服务器响应请求,并把对应的网页发送给浏览器。

    61710

    Linux 信号(Signal)

    我们能向进程发送很多类型的信号,其中一些常见的信号 SIGINT 、SIGQUIT、 SIGTERM 和 SIGKILL 都是通知进程退出,但它们有什么区别呢?...当外部设备出现一个必须由 CPU 处理的事件,如键盘敲击、数据到达网卡等,内核会收到中断通知,暂时打断当前程序的执行,跳转到该中断类型对应的中断处理程序。...SIGHUP 运行在终端中,由 bash 启动的进程,都是 bash 的子进程。终端退出结束时会向 bash 的每一个子进程发送 SIGHUP 信号。...会话是用户登录系统到退出的所有活动,从登录到结束前创建的所有进程都属于这次会话。会话有一个前台进程组,还可以有一个或多个后台进程组。只有前台进程可以从终端接收输入,也只有前台进程才被允许向终端输出。...在常规的 C/C++ 程序中,当你期望指针是指向某个结构,但实际指向的是 NULL,会导致应用程序崩溃。这种崩溃实际上是内核向进程发送了信号 SIGSEGV。

    1.2K10

    Linux 中的 Process Group 和 Session

    原理很简单, 当我们按下 Ctrl-C 的时候, shell 进程会向前台进程发送一个 SIGINT 信号, 进程收到 SIGINT 的默认操作就是退出....从 shell 中启动一个进程的时候, shell 会给这个进程设置为一个新的进程组....相关命令 kill 命令用来给 pid 发送信号, 一般命令形式是 kill -SIG PID, 可以在PID参数前面加上 - 表示一个 Process Group, 而不是 Process....比如: kill -TERM -6379 # 向 6379 进程组发送 TERM 信号 回到问题 那么我们现在可以再思考一下刚开始的问题, 为什么按 Ctrl-C 的时候, 父进程和子进程都会收到 SIGINT...如果这时候进程组中的某个进程的状态是 STOP, 那么内核会向该进程组的所有进程发送 SIGHUP, 并紧接着发送 SIGCONT 信号.

    1.8K30

    shell语法学习

    23.从 Bash 脚本创建目录 使用 shell 脚本运行系统命令的能力使开发人员的工作效率大大提高。下面的简单示例将向您展示如何在 shell 脚本中创建目录。 #!...27.附加到文件 下面的 shell 脚本示例将向您展示如何使用 bash 脚本将数据附加到文件系统上的文件。它向早期的 editors.txt 文件添加了一行。 #!...29.从 Shell 脚本发送邮件 从 bash 脚本发送电子邮件非常简单。下面的简单示例将演示一种从 bash 应用程序执行此操作的方法。 `#!...subject $recipient <<< $message` ` Bash 它将向收件人发送包含给定主题和消息的电子邮件。...30.解析日期和时间 下一个 bash 脚本示例将向您展示如何使用脚本处理日期和时间。同样,Linuxdate 命令用于获取必要的信息,我们的程序执行解析。 `#!

    1.2K40

    Linux 可观测性 BPF&eBPF 以及 BCC&bpftrace 认知

    类似 JavaScript 中的事件处理机制,比如单机,双击鼠标触发的事件回调 BPF 则允许内核在系统和应用程序事件(如磁盘 I/O 事件)发生时运行一段小程序,这样就催生了新的系统编程技术。...它提供了一个编写内核 BPF 程序的C语言环境,同时还提供了其他高级语言(如Python、Lua和C++)环境来实现用户端接口。...BCC和bpftrac 它们具有互补性: bpftrace在编写功能强大的单行程序短小的脚本方面甚为理想; BCC 则更适合开发复杂的脚本和作为后台进程使用,它还可以调用其他库的支持。...打印完信息后,从@filename[tid]中删除相应的文件名。 END块在脚本结束时执行,清除@filename变量。...bpftrace 自带的一些其他的脚本 ┌──[root@liruilongs.github.io]-[~] └─$rpm -ql bpftrace | egrep "*.bt$" /usr/share

    52810

    Docker 常用命令汇总

    run命令启动参数有很多,以下是一些常规使用说明 当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括: 检查本地是否存在指定的镜像,不存在就从公有仓库下载 利用镜像创建并启动一个容器...分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去 从地址池配置一个 ip 地址给容器 执行用户指定的应用程序 执行完毕后容器被终止 Usage...官方文档中说attach后可以通过CTRL-C来detach,但实际上经过我的测试,如果container当前在运行bash,CTRL-C自然是当前行的输入,没有退出;如果container当前正在前台运行进程...,如输出nginx的access.log日志,CTRL-C不仅会导致退出容器,而且还stop了。...其他命令 docker还有一些如login、cp、logs、export、import、load、kill等不是很常用的命令,比较简单,请参考官网。

    44320

    进程信号大总结(整理)

    用户按下Ctrl-C ,这个键盘输入产生一个硬件中断,被OS获取,解释成信号,发送给目标前台进程 ....调用系统函数向进程发信号 首先在后台执行死循环程序,然后用kill命令给它发SIGSEGV信号。 4568是test进程的id。...硬件异常产生信号 硬件异常被硬件以某种方式被硬件检测到并通知内核,然后内核向当前进程发送适当的信号。...如何理解OS向进程发送信号?能否描述一下完整的发送处理过程? 阻塞信号 1....=3的原因是:只有3个参数,写三个参数,agrc为3,不为3,再用法错误,argv[0],是你输入命令行中的第一个字符串 signum是信号编号(是int型),又因为argv[],传进来的方式一定是一个字符串

    11810

    40 个简单又有效的 Linux Shell 脚本示例

    /test.sh Hey Howdy 因此,1、用于访问第一个参数;2、用于访问第二个参数,依此类推。最后,3、用于获取参数总数。...23、从 Bash 脚本创建目录 使用 shell 脚本运行系统命令的能力使开发人员的工作效率大大提高。下面的简单示例将向您展示如何在 shell 脚本中创建目录。 #!...29、从 Shell 脚本发送邮件 从 bash 脚本发送电子邮件非常简单。下面的简单示例将演示一种从 bash 应用程序执行此操作的方法。 #!...subject $recipient <<< $message` 它将向收件人发送包含给定主题和消息的电子邮件。...30、解析日期和时间 下一个 bash 脚本示例将向您展示如何使用脚本处理日期和时间。同样,Linuxdate 命令用于获取必要的信息,我们的程序执行解析。 #!

    36810

    python学习-ipython和pye

    Python的主要功能如下: 1.运行ipython控制台  2.使用ipython作为系统shell  3.使用历史输入(history)  4.Tab补全  5.使用%run命令运行脚本  6.使用...,就可以将有关该对象的一些通用信息显示出来,这就叫做对象的内省 ? 如果对象是一个函数或者实例方法,则它的docstring也会被显示出来: 定义方法如下: ? 这时查看该方法的内省信息: ?...使用%run命令运行脚本 在ipython会话环境中,所有文件都可以通过%run命令当做Python程序来运行,输入%run 路径+python文件名称即可 ?...(部分匹配) Ctrl-Shift-v   从剪贴板粘贴文本 Ctrl-C   中止当前正在执行的代码 Ctrl-A   将光标移动到行首 Ctrl-E   将光标移动到行尾 Ctrl-K   删除从光标开始至行尾的文本...设置面向程序的本地版本,通过将版本号写入当前目录下的.python-version 文件的方式。

    1.1K10
    领券