在终端中暂停长时间运行的程序?


17

是否可以使用键盘组合键暂停在终端中运行的程序?万一重要,我不打算在程序暂停时在该终端内运行任何其他操作。我只想暂停程序执行,然后再恢复。我怎样才能做到这一点?


到底是什么程序?
Jobin 2014年

@Jobin我用C ++编写的程序。但是我不想更改源代码。
becko 2014年

您是否要在重启后恢复该过程?
Jobin 2014年

@Jobin不,我不想重启。我想稍后再恢复,但是我不会在中间重新启动系统。
becko 2014年

Answers:


17

Control+ Z

这将暂停该过程并使您返回Shell。您现在可以根据需要执行其他操作,也可以输入,%然后按来返回到后台进程Return

请注意,如果您要对需要响应的内容执行此操作,则会使系统崩溃,但如果它只是一个nano实例,则一切都应该正常。


暂停终端程序安全吗?
潘迪2014年

@Pandya:为什么不呢?
Jobin 2014年

@Pandya我确定这取决于过程...如果某些事情对时间非常敏感,则可能不会被挂起,但是大多数事情可以。
奥利(Oli)

16

这是bash作业控制

使用CTL-Z停止作业。

然后,您可以键入bg在后台运行它,如果仅在工作时,它可以做到这一点。

如果您有多个,则可以使用作业列出,然后使用fg%Nbg%N达到所需的效果。

例:

ubuntu @ ip-10-170-59-120:〜$查找/ usr -name“ * .so”
/usr/lib/python2.7/dist-packages/OpenSSL/crypto.so
/usr/lib/python2.7/dist-packages/OpenSSL/SSL.so
/usr/lib/python2.7/dist-packages/OpenSSL/rand.so
/usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
/usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
/usr/lib/python2.7/dist-packages/gi/_gi.so
/usr/lib/python2.7/config/libpython2.7.so
...
^ Z
[1] +停止查找/ usr -name 

ubuntu @ ip-10-170-59-120:〜$工作
[1] +停止查找/ usr -name“ * .so”

ubuntu @ ip-10-170-59-120:〜$ fg%1
找到/ usr -name“ * .so”
/usr/lib/php5/20090626+lfs/apc.so
/usr/lib/php5/20090626+lfs/memcache.so
/usr/lib/php5/20090626+lfs/mysql.so
...

对于不属于TTY的任何其他内容,可以使用SIGSTOP和SIGCONT。因此,举例来说,如果您认为某个守护程序导致了问题,但您不知道它是哪个守护程序,则可以发送pid SIGSTOP,就像击暂停一样,然后检查更改,确定不是,然后冲洗并重复直到找到问题。

希望这可以帮助。


1
好答案!我可以补充一点,这不仅是bash的事情吗?角壳的工作方式相同。
Sergiy Kolodyazhnyy 2015年

4

我知道这个答案有点晚了,但是您可以使用快捷方式Ctrl+s停止程序(如果您想读取输出或类似内容),则可以继续使用快捷方式Ctrl+q

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.