Questions tagged «signals»

信号是可以发送给正在运行的进程的消息。信号可以由程序,用户或管理员启动。

5
获取SSH转发信号
我希望能够通过ssh发送信号(SIGINT最重要)。 该命令: ssh server "sleep 1000;echo f" > foo 将开始在服务器上进入睡眠状态,并在1000秒后将“ f \ n”放入本地计算机上的foo文件中。如果按CTRL-C(即,将SIGINT发送到ssh),它将杀死ssh,但不会杀死远程服务器上的睡眠。我希望它杀死远程服务器上的睡眠。 所以我尝试了: ssh server -t "sleep 1000;echo f" > foo 但是,如果stdin不是终端,则会出现此错误: Pseudo-terminal will not be allocated because stdin is not a terminal. 然后SIGINT仍然不转发。 所以我尝试了: ssh server -t -t "sleep 1000;echo f" > output 但是然后foo中的输出不是'f \ n'而是'f \ r …
22 ssh  remote  tty  signals 

5
如何通过终端软销GUI应用程序?
有没有一种方法可以以友好的“ 请立即退出 ”方式关闭GUI应用程序,而无需通过图形方式访问应用程序窗口? 例如,如果Gnome / X显示崩溃为黑色,我想切换到tty2并以某种方式关闭诸如firefox的应用程序,以使其保存配置等。

2
bash`suspend`内置命令的目的是什么?
我输入help suspend并得到以下简短说明: suspend: suspend [-f] Suspend shell execution. Suspend the execution of this shell until it receives a SIGCONT signal. Unless forced, login shells cannot be suspended. Options: -f force the suspend, even if the shell is a login shell Exit Status: Returns success unless job control is not enabled …

1
SSH会话中的Ctrl-C处理
当我启动执行长时间运行的命令的SSH会话时,使用Ctrl+ C(SIGINT)处理会发生什么? 我可以看到SSH会话已关闭,但是我不确定谁先获得了SIGINT:是吗... 远程长时间运行的命令?也就是说,(a)调用远程命令中的信号处理程序并停止远程命令,(b)生成它的外壳程序检测到命令已停止,并且也停止(c)远程sshd检测到外壳程序已停止,所以它关闭了连接 要么 本地ssh接收信号,并关闭连接。 我认为(1)正在发生,但想确定。 在这种情况下,我也不确定SIGINT的外壳处理会发生什么情况。例如,如果我... ssh remote 'while true ; do sleep 1 ; date ; done' 和Ctrl+ C,然后断开远程连接。有没有一种方法可以在Ctrl+ 之后仍然有效的shell下运行远程命令C?也就是说,在这种情况下,停止循环并允许我继续在远程Shell上工作吗?
20 ssh  signals 

1
为什么SIGUSR1导致进程终止?
我对另一个问题的评论感到惊讶: 实际上,在启动后过早发送dd USR1信号(即,在bash脚本中,即启动后的行)实际上将终止它 有人可以解释为什么吗?
20 signals 

6
流程后代
我正在尝试建立一个过程容器。该容器将触发其他程序。例如-一个bash脚本,它以'&'用法启动正在运行的后台任务。 我所追求的重要功能是:杀死容器时,应该杀死所有在其下产生的东西。不仅是直系子女,还有他们的后代。 当我开始这个项目时,我错误地认为,当您杀死一个进程时,它的孩子也会被自动杀死。我已经从有同样错误想法的人那里寻求建议。尽管可以捕捉到信号并将杀人事件传递给孩子,但这并不是我在这里寻找的东西。 我相信我想要实现的目标,因为当您关闭xterm时,其中运行的所有内容都会被杀死,除非未进行任何操作。这包括孤立的过程。那就是我想要重新创建的东西。 我有一个想法,就是我所寻找的是unix会话。 如果有一种可靠的方法来标识一个进程的所有后代,那么也能够向他们发送任意信号将很有用。例如SIGUSR1。

1
如果多线程Linux进程收到信号,该怎么办?
如果Unix(Posix)进程接收到信号,则将运行信号处理程序。 在多线程进程中会发生什么?哪个线程接收信号? 我认为,应该扩展信号API来处理该问题(即应该能够确定信号处理程序的线程),但是在网上寻找信息时,我只在Linux内核邮件列表中发现了长达一年之久的信息。不同的论坛。据我了解,Linus的概念不同于Posix标准,并且首先构建了一个兼容层,但现在Linux遵循posix模型。 目前的状态是什么?

2
为什么`kill -l`不列出信号号32和33?
kill -l在linux上执行可以得到: 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU …
18 linux  kill  signals 

2
杀死一个暂停的进程?
我对以下内容感到有些困惑: % vim tmp zsh: suspended vim tmp % kill %1 % jobs [1] + suspended vim tmp % kill -SIGINT %1 % jobs [1] + suspended vim tmp % kill -INT %1 % jobs [1] + suspended vim tmp 因此,我辞职只是“自己动手做”,想知道以后为什么这样做: % fg [1] - continued vim tmp Vim: Caught …

1
谁决定哪个应用程序从键盘接收信号?
我目前对来自终端中键盘的信号的理解是(主要基于试图将我的观察结果映射到可以在google上找到的内容),如下所示: 用户按抄送 这作为字节发送到终端的输入缓冲区,该字节是通过从c的7位ascii值中清除最左边的2位而计算得出的 此后,它开始变得非常模糊,因为配置什么输入意味着在端子(stty)中完成了什么信号。我想这意味着终端本身正在将信号发送到进程。但是我也尽管那个终端不知道正在读取它的应用程序。 终端中的键盘发送信号如何从头到尾工作?
16 terminal  signals 

3
为什么应该将fork()设计为返回文件描述符?
在他的关于网页的自管绝招,丹·伯恩斯坦解释了竞争条件select()和信号,提供一个解决办法,并得出结论认为, 当然,正确的事情是fork()返回文件描述符,而不是进程ID。 他的意思是-能够select()在子进程上处理其状态更改,而不必使用信号处理程序来通知那些状态更改,这是否有意义?

1
等待bash-builtin以100%的速度消耗CPU
至少在GNU bash版本4.3.42 x86_64和&GNU bash版本4.3.11 x86_64上发生 我用sleep & wait $!一个简单的方法而不是简单的方法sleep来获得sleep信号的可中断性(如SIGUSR1)。但是wait当您运行以下命令时,bash-builtin的行为似乎很奇怪。 1号航站楼: cat <( trap 'echo SIGUSR1' SIGUSR1; echo $BASHPID; while :;do sleep 1 & wait $!; echo test; done )& 2号航站楼: kill -10 /the pid of the subshell, printed by the previous command/ 1号航站楼: ^C (ctrl + C) 然后,我得到了以100%消耗CPU的子外壳。 1号航站楼: pkill …

1
从脚本启动后台进程,并在脚本结束时进行管理
我想要类似于脚本中的守护程序来运行和配置进程。 我的Shell是在Cygwin下模拟的zsh,守护进程是基本的FTP服务器SFK。 对于这里重要的事情,脚本startserv.sh可以按如下方式草拟: #!/bin/sh read -s -p "Enter Password: " pw user=testuser share=/fshare cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share" $cmd & 运行脚本后startserv.sh,它停止(结束?)而不显示任何提示,然后: CTRL+ C结束脚本和后台作业过程; 点击Enter脚本将结束该过程,并保留在后台。 无论如何,我只能通过ps而看不到它jobs,因此,当我想关闭该过程时,我必须发送一个残酷的kill -9信号,我希望避免使用 CTRL+ C。 另一种方法 是在后台运行整个脚本。“将”,但是read如果脚本以方式运行,则该命令将无法获取用户输入startserv.sh &。 请注意,我需要一个临时服务器,而不是真正的守护程序:也就是说,我希望服务器进程在脚本结束后在后台运行,以执行简单的交互式Shell任务(使用虚拟机来宾),但是我不希望这样做。不需要生存过程的壳;因此nohup似乎不合适。

1
退出一个终端时更新其他终端上的bash历史记录
我知道这个问题并不是很模糊,因为这里的问题一直在更新(这里重复)。 我想要达到的目标有些不同。我不喜欢每次ls输入(history -a; history -c; history -r)时都会立即重写文件的想法。 我想在退出时更新文件。这很简单(实际上是默认设置),但是您需要添加而不是重写: shopt -s histappend 现在,当终端关闭时,我想让所有其他保持打开状态以了解更新。 我更喜欢这样做,而不必检查我键入的$PS1每个内容command。我认为捕获某种信号会更好。你会怎么做?如果不可能,也许简单cronjob吗? 我们如何解决这个难题?

4
Ctrl-C与bash中的两个同时命令
我想在Linux机器上的bash中同时运行两个命令。因此,在我的./execute.shbash脚本中,我输入: command 1 & command 2 echo "done" 但是,当我想停止bash脚本并按Ctrl+时C,仅第二个命令停止。第一个命令保持运行。如何确保完整的bash脚本已停止?或者在任何情况下,如何停止两个命令?因为在这种情况下,无论我多按一次Ctrl+ C,命令都会继续运行,并且我不得不关闭终端。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.