- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个脚本,我希望它对 SIGSTOP 几乎“免疫”。
我了解 SIGKILL 和 SIGSTOP 都不能被捕获或忽略。
我知道 Linux 的 init 系统无法接收到“致命”信号,因为它的信号结构标志上有 SIGNAL_UNKILLABLE 标志(尽管该句子的后半部分大部分时间都在我脑海中浮现)。
我愿意编辑我的内核以授予此脚本豁免权,唯一的问题是我不知道如何。
所以,我的问题是,有没有办法使某个脚本/进程的 SIGSTOP 无效?
由于我的脚本的服务文件中的 Restart 参数(使用 systemd),我能够处理 SIGKILL,虽然我已经滚动浏览手册,为暂停的进程寻找类似的东西,但我还没有找到任何东西。
对于 SIGSTOP 导致的进程暂停,是否有类似于 Restart=always 的内容?
我宁愿不必经历改变内核或与内核相关的过程,但如果这是我唯一的方法。
谢谢。
最佳答案
好的,所以我能想到的最好的解决方案是 SELinux。
SELinux 是由 NSA 创建的内核附加组件,后来向公众发布。它通常用于 Linux 系统,默认情况下在 Android 设备上提供。 SELinux 允许创建“上下文”。上下文是提供给文件和进程的附加标签,允许分割职责和权限。
这如何解决您的问题?好吧,您可以限制您的用户进程(甚至是 root 用户)的 SELinux 权限,这样您甚至根本不允许向其他进程发出信号。实际上,您可以阻止与它的任何交互。如果您愿意,您甚至可以阻止自己关闭 SELinux(尽管从操作的角度来看,最好不要关闭它)。在某种程度上,这可能是您最接近不可破解范围的解决方案。话虽如此,为此目的的 SELinux 设置和配置并不完全是在公园里散步。文档是有限的(但存在),特定于发行版,在某些情况下甚至是深奥的。我自己对 SELinux 有一些经验。
编辑:
做一些快速的谷歌搜索,似乎可以在 Arch 上安装 SELinux,但与 Arch 上的大多数东西一样,它需要一些努力 - 超过了 StackOverflow 注释 block 中的内容。但是,一旦安装了 SELinux,我将在这里简要描述您的目标:
关于linux - 有没有办法使某个脚本的 SIGSTOP 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59852298/
它不是 Ctrl+Z。那是为了 SIGTSTP .另外,stty -a显示 ^S 作为组合,但它似乎不起作用。 最佳答案 没有发送 SIGSTOP 的组合键。 Control-S 告诉终端驱动程序暂停
我创建了一个脚本,我希望它对 SIGSTOP 几乎“免疫”。 我了解 SIGKILL 和 SIGSTOP 都不能被捕获或忽略。 我知道 Linux 的 init 系统无法接收到“致命”信号,因为它的信
我有一个运行 bash 脚本的 Python 脚本。我需要能够终止 bash 脚本,如果它看起来是无限的,并且它还必须在 chroot jail 中运行,因为该脚本可能很危险。我使用 psutil.P
我的测试代码是 #include #include #include #include int main() { int c = fork(); if (c == 0) while(1
我正在研究信号:特别是 SIGSTOP 和 SIGCONT。这是我写的一个测试程序。这个想法是创建一个 N + 1 的链进程(包括主进程)。每个人都必须等待它的 child 停止,然后停止本身。当后者
只是想知道 SIGSTOP 和 SIGTSTP 信号之间的区别。 最佳答案 这两个信号都旨在挂起一个进程,该进程最终将通过 SIGCONT 恢复。它们之间的主要区别是: SIGSTOP 是以编程方式发
不幸的是SIGSTOP无法被捕获。之前向我的进程发送 SIGTERM 是常见的还是好的做法,这样我就可以正常关闭我的脚本?两者之间没有足够的时间,我需要 sleep 1 秒吗? kill SIGSTO
我尝试通过发送 SIGSTOP 停止进程,然后在选择 (4min) 的超时值后发送 SIGCONT。 select 调用立即失败并出现 timeout,有没有办法阻止 select 的计时器在进程卡住
我在 python 中有一个非常简单的 tcp 服务器,其代码如下: #!/usr/bin/env python
我试图在 mans 中找到这个,但可以找到正确的人或正确的段落。 最佳答案 SIGINT 和 SIGSTOP 会暂停子进程吗? 不会,SIGINT 的默认操作是终止进程而不是暂停。虽然 SIGSTOP
我正在尝试编写一个 C 程序,其中父进程挂起子进程并在几秒钟后继续执行它。 #include #include #include #include void sigstop(); void s
我有一个启动 4 个其他二进制文件的 shell 脚本。我正在向 shell 脚本发送 SIGSTOP。这也会停止所有其他 4 个进程吗?如果不是,我应该怎么做才能将 SIGSTOP 转发给这些进程?
当我从父级调用 kill(Child_PID, SIGSTOP); 时,我希望子级停止执行而父级继续。这是预期的行为还是我必须在 child 中明确声明 SIGSTOP 处理程序?我到处搜索,但找不到
我想知道 SIGSTOP 在 Linux 内核中是如何工作的。它是如何处理的?以及内核如何在处理时停止运行? 我熟悉内核代码库。所以,如果你能引用内核函数就好了,事实上这就是我想要的。我不是在从用户的
Docker docs请注意以下有关如何运行 clean up 的(带代码)在容器关闭时: Lastly, if you need to do some extra cleanup ... on sh
所以我有一个很好的合作PTRACE_TRACEME由 PTRACE 处理的子程序包装程序。 问题是如果管理员(或其他)决定 SIGSTOP子程序,我该如何处理?并拿起SIGCONT后来,当然。 答案可
假设我有一个父进程和一个子进程(以例如 fork() 或 clone() 启动)在 Linux 上运行。进一步假设存在一些父子都可以修改的共享内存。 在父进程的上下文中,我想停止子进程并知道它实际上已
我有一些 Python 代码使用 threading.Timer 来实现 60 秒的操作超时。 问题在于此代码在作业控制环境中运行,在该环境中它可能会被更高优先级的作业抢占。在这种情况下,它将发送 S
我知道 /sbin/init 出于显而易见的原因对来自内核的 SIGKILL 和 SIGSTOP 进行了特殊保护。 我已经尝试通过 ioctl() 告诉内核我想接收 SIGSTOP(类似于 SIGAB
我正在停止从另一个 C 程序运行的 shell 脚本。代码如下:杀死(pid,SIGSTOP);我想知道该 shell 脚本停止是否有任何与内核相关的延迟。 换句话说,SIGSTOP 停止另一个进程的
我是一名优秀的程序员,十分优秀!