如果我关闭启动某个进程的虚拟终端,输出是直接转到/dev/null,还是会以某种方式污染内存?
无论如何,我可以在此之后的任何时候获取输出以继续阅读吗?
[编辑]:那么,否认一个过程的那一刻是否有效地结束了我控制其输出的权力?
我还注意到,如果我否认一个停止的进程,起初一切似乎都很正常:它既不会终止,也不会显示在作业中。但是,如果我退出(并且我不是说关闭终端,只是从 退出su,例如),该过程将终止。尽管如此,后台运行的被拒绝的进程可以保持运行。
“是的,而且……”是即兴喜剧中的一个很棒的经验法则。在 UNIX 世界中则不然。
当我运行这个公认的愚蠢yes&命令时,我无法中断它。终端崩溃或陷入循环。
我希望该yes进程立即暂停,因为如果尝试写入标准输出,后台的任何进程都应该暂停,但情况似乎并非如此,我想知道为什么。
我正在尝试设置一个 shell 脚本,以便它运行后台进程,当我Ctrlc使用 shell 脚本时,它会杀死孩子,然后退出。
我设法想出的最好的就是这个。似乎kill 0 -INT在等待发生之前也杀死了脚本,所以 shell 脚本在孩子们完成之前就死了。
关于如何让这个 shell 脚本在发送后等待孩子们死亡的任何想法INT?
#!/bin/bash
trap 'killall' INT
killall() {
echo "**** Shutting down... ****"
kill 0 -INT
wait # Why doesn't this wait??
echo DONE
}
process1 &
process2 &
process3 &
cat # wait forever
Run Code Online (Sandbox Code Playgroud) 昨天临睡前,我开始了一个漫长的过程,我认为它在我站起来之前就完成了,所以我使用了
./command && sudo poweroff
Run Code Online (Sandbox Code Playgroud)
我的系统配置为不要求输入密码sudo poweroff,因此在该命令完成后它应该关闭。
但是它仍在运行,我现在想将该系统用于其他任务。让该命令在后台运行不是问题,但让我的系统随时可能关闭才是问题。
有没有办法防止zsh执行poweroff命令,同时确保第一个命令运行直到完成?
/etc/sudoers在这种情况下,编辑文件以便系统询问我的密码是否仍然有帮助?
可能的重复:
如何否认正在运行的进程并将其关联到新的屏幕外壳?
我启动了一个持续很长时间的命令。我不得不断开连接,所以我bg在退出之前将它移到后台(使用 CTRL+Z 和)。
像这样的东西:
$ my_command
***command is beeing executed and is taking a long time***
^Z
[1]+ Stopped my_command
$ bg
[1]+ my_command &
$ exit
Run Code Online (Sandbox Code Playgroud)
我重新连接并可以在进程列表中看到该命令,但无法使用fg.
$ fg
-bash: fg: current: no such job
Run Code Online (Sandbox Code Playgroud)
我如何在前台恢复我的工作?
我正在寻找诸如command1 ; command2如何运行之类的东西command2,command1但我想计划command2何时command1已运行的执行。
它可以通过输入command2并通过 Enter 确认来解决,假设command1不消耗标准输入,command1并且不会在输出上产生太多文本,使得输入不切实际(输入的字符与command1输出混合)。
正如我们所知,shell 使用户能够&在命令行的末尾运行后台进程。每个后台进程都由一个作业 ID 标识,当然,由它的 PID 标识。
当我执行新作业时,输出类似于[1] 1234(第二个数字是进程 ID)。尝试调用类似的命令stop 1并stop %1导致失败消息:stop: Unknown job: 1
了解该stop命令会导致作业暂停,我想知道如何获取作业 ID并正确执行。如果杀死作业的唯一方法是通过其进程 ID,那么作业 ID 的目的是什么?
在后台运行作业
$ command &
Run Code Online (Sandbox Code Playgroud)
完成后,终端打印
[n]+ command
Run Code Online (Sandbox Code Playgroud)
或者
[n]- command
Run Code Online (Sandbox Code Playgroud)
所以有时它是一个加号,有时它是一个减号跟随[n]。
加/减是什么意思?
有人可以以一种易于理解的方式解释在unix和unix类系统中控制终端的概念吗?它与会话有关吗?如果是,那么如何?