如何将使用 sudo 启动的正在运行的进程发送到后台?

如何将使用 sudo 启动的正在运行的进程发送到后台?

我刚刚安装了SLC6(源自RHEL6的SL6)。我可以通过在启动进程的终端中按 Ctrl-Z 将正在运行的进程发送到后台。但是,当我使用 sudo 启动命令时,我无法执行此操作。它曾经在 SLC5 中无缝工作。

我可以做任何配置来允许这样做吗?

编辑这是我尝试运行的命令示例:

[user@pcald02 ~]$ sudo emacs
^Z^C

Ctrl-Z 使符号 ^Z 出现,但没有其他反应。现在我意识到即使Ctrl-C也是无效的。

没有须藤:

[user@pcald02 ~]$ emacs
^Z
[1]+  Stopped                 emacs
[user@pcald02 ~]$ 

答案1

如果我理解你的问题,下面的内容对我来说在 CentOS 6.4 上工作得很好,我希望它与 SLC6 非常相似:

初始命令
$ sudo sleep 300
^Z
[1]+  Stopped                 sudo sleep 300
背景
$ bg
[1]+ sudo sleep 300 &

$ jobs
[1]+  Running                 sudo sleep 300 &

$ ps -eaf|grep sudo
root     25752 25669  0 09:53 pts/0    00:00:00 sudo sleep 300
sam      25755 25669  0 09:53 pts/0    00:00:00 grep sudo
杀死工作 ( Ctrl+ C)
$ fg
sudo sleep 300
^C

$ ps -eaf|grep sudo
sam      25758 25669  0 09:53 pts/0    00:00:00 grep sudo
操作系统信息
$ uname -a
Linux mungr 2.6.32-358.6.1.el6.x86_64 #1 SMP Tue Apr 23 19:29:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release 
CentOS release 6.4 (Final)

答案2

CTRL-ZSIGTSTP向进程发送信号。

所以最简单的方法是:

sudo kill -TSTP <pid>

来自另一个壳。

答案3

我猜这里真正的问题是您尝试运行的命令是 Emacs。以 root 身份运行 Emacs 绝不是一个好主意。 Emacs 还会覆盖许多击键,因此C-z可能仅仅因为这个原因而无法工作。如果root已经登录,可能会在显示屏emacs上以图形方式启动。root等等等等.

查看使用sudo:Tramp 中的方法从 Emacs 中编辑文件sudo。例如,要编辑/etc/motd,请执行C-x C-f并将路径键入为/sudo:root@localhost:/etc/motd

相关内容