jobs

为什么“yes&”会使我的 Bash 会话崩溃?
jobs

为什么“yes&”会使我的 Bash 会话崩溃?

“是的,而且……”是即兴喜剧中的一个精彩的经验法则。在 UNIX 世界中则不然。 当我运行这个公认的愚蠢yes&命令时,我无法中断它。终端崩溃或陷入循环。 我希望该yes进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。 ...

Admin

对评论的回应
jobs

对评论的回应

我运行了很多 vim 窗口,并且经常将它们放在 bg 中。问题是vim我列出的时候他们都说了jobs,所以很难区分。 [1] - suspended nvim [2] - suspended nvim [3] + suspended nvim 解决此问题的一种方法是在启动 vim 时打开特定文件: nvim ./myfile jobs: [1] + suspended nvim myfile 但这是一个糟糕的名字替代品。 另一种选择是(错误)使用这样的环境变量来命名缓冲区: vim name=my_name 但是 的输出jobs可能更...

Admin

为什么从 /dev/stdin 读取的命令在发送到后台时会获得状态“[1]+ Stopped”?
jobs

为什么从 /dev/stdin 读取的命令在发送到后台时会获得状态“[1]+ Stopped”?

我尝试运行以下命令: cat base64 /dev/stdin md5sum /dev/stdin tail /dev/stdin 在所有情况下,当我这样做时: ^Z $ bg $ jobs 我得到的状态是:[1]+ Stopped而不是[1]+ Running. 但如果我从管道中读取,则该作业被视为正在运行: mkfifo /tmp/fifo1 cat /tmp/fifo1 ^Z $ bg $ jobs # [1]+ Running tail /tmp/fifo1 & 为什么读取/dev/st...

Admin

为什么 Zsh 函数中的后台命令在作业中无法正确显示?
jobs

为什么 Zsh 函数中的后台命令在作业中无法正确显示?

jobs在 Bash 5.2 中,以下任一操作之后的输出是相同的模作业编号: sleep 3 # press C-z s() { sleep 3; } s # press C-z 在两者中,jobs都会产生类似的东西 [1]+ Stopped sleep 3 在 Zsh 5.9 (x86_64-apple-darwin20.6.0) 中,第一个生成包含以下sleep命令的类似足够的输出: [1] + suspended sleep 3 第二个产生几乎无用的输出: [1] + suspended 我有许多...

Admin

为什么重新连接 ssh 后作业会丢失?
jobs

为什么重新连接 ssh 后作业会丢失?

我有一个通过 ctrl + z 和 bg 在后台运行的作业,重新连接 ssh 后,我无法在 jobs 命令中找到该作业,但可以在 ps grep 中找到它。现在,我搜索了这个,我得到 tmux 可能是一个更好的解决方案,但是,我仍然想知道为什么 exit ssh 会丢失 jobs 命令中的作业。我已经把它放在后台了,重新连接后它应该存在,对吗? 与 tty/ssh 会话断开连接后如何管理作业? ...

Admin

bg和fg发送什么信号?
jobs

bg和fg发送什么信号?

我知道ctrl+z改变了一个过程前景到背景- 作为暂停- 通过SIGTSTP。我可以通过fg或bg根据需要重新运行后台挂起的进程。 问题 bg发出什么信号fg? 不确定两者发送的内容是否相同或不同。 我确实意识到没有既非man fg也非man bg。好吧,没有关于通过fg --help和的信号的信息bg --help ...

Admin

如何列出所有后台进程?
jobs

如何列出所有后台进程?

是否可以使用该ps命令列出所有正在运行的后台进程,或者是获取该命令后台进程列表的唯一选项jobs? ...

Admin

在shell中执行阻塞进程后调用其他进程
jobs

在shell中执行阻塞进程后调用其他进程

我有一个本质上是阻塞的进程。它首先被执行。为了执行第二个进程,我将第一个进程移动到后台并执行第二个进程。使用 wait 语句,我在终端中等待。然而,似乎退出外壳后(按CTRL+ C),第一个进程并没有顺利退出。下面是 shell 脚本: 执行.sh #!/bin/sh # start process one in background python3 -m http.server 8086 & # start second process firefox "http://localhost:8086/index.html" wait 我发...

Admin

获取管道后台进程 PID 的可靠方法
jobs

获取管道后台进程 PID 的可靠方法

我需要检索一个进程的 PID,该进程通过管道传输到另一个进程,这些进程一起作为 bash 中的后台作业生成。以前我只是简单地依赖pgrep,但事实证明,在pgrep找到进程之前可能会有 >2 秒的延迟: #!/bin/bash cmd1 | cmd2 & pid=$(pgrep cmd1) # emtpy in about 1/10 我发现针对此问题的一些常见建议是使用进程替换而不是简单的管道 ( cmd1 >(cmd2) & pid=$!) 或使用jobs内置函数。进程替换运行整个子shell(对于整个运行时),所以我宁愿jo...

Admin

cron 作业在执行脚本一段时间后终止
jobs

cron 作业在执行脚本一段时间后终止

我有几个 cronjobs 在一天中的不同时间运行,但一个特定的 cronjobs 没有按预期运行并在一段时间后终止。 0 0 * * * python3 /scratch/pyscripts/backdoor.py --user SEKHAR >> /scratch/tlog/backdoor.log 2>&1; backdoor.py 脚本将在 for 循环中一一执行每个文件,它会在 1 小时或大约执行 25 个文件后突然终止。日志文件中既没有错误消息,也没有退出消息。 但当手动执行时,运行很顺利。 如何调试这个特定的 cr...

Admin

无法在破折号中对 jobs 命令的输出进行 grep 或字数统计
jobs

无法在破折号中对 jobs 命令的输出进行 grep 或字数统计

这是我在Arch的dash shell和FreeBSD默认的sh shell中测试的,结果是一样的。 $ sleep 100 & $ jobs [1] + Running sleep 100 $ jobs | wc 0 0 0 $ jobs | grep 1 我不能wc或grep在命令的输出上jobs。该jobs命令是 shell 内置的。 这是什么原因呢?是否以jobs某种方式在交互式 shell 和管道中打印不同的信息?我不知道细节,但我知道 的类似行为ls。即,您将在 ...

Admin

运行一个命令并在 bash 中第一次被 CTRL C 杀死后执行另一个命令
jobs

运行一个命令并在 bash 中第一次被 CTRL C 杀死后执行另一个命令

我需要在 bash 命令行中启动 service1 。一段时间后,我不再需要该服务,我按 CTRL-C 来停止它。该服务启动了另一个后台服务2。为了停止它,我通常在 service1 停止后执行“killall service2”。我可以像这样在一个命令行中执行此操作吗?: #: service1; killall service2 上面的代码不起作用,因为如果我执行 CTRL-C,第二部分(killall)永远不会执行。 ...

Admin

Linux下的启动命令
jobs

Linux下的启动命令

我有一个在 cPanel 服务器(CentOS 6)上运行的自定义脚本,如下所示。它在指定端口上启动一项服务来接受传入数据。它用开始命令并运行正常。 #!/bin/bash PORT_NUMBER=xxxx echo "Start Time: $(date)" if sudo netstat -altpn|grep xxxx | grep -q 'CLOSE_WAIT'; then echo "Found Close Wait" sudo stop comm sleep 60 sudo stop comm sudo lsof -i tcp:${PORT_NU...

Admin