Answers:
There are stopped jobs
消息很远,很远就是一个错误。这只是一条通知,告诉您您试图退出Shell,但是您有一个或多个暂停的作业/程序(在您的情况下emacs
,您在&
命令末尾使用了后台作业/程序)。除非您打算这样做,否则系统不允许您退出Shell并杀死作业。您可以根据以下消息做几件事:
jobs
命令告诉您已暂停的工作fg
命令在前台添加作业exit
再次输入;exit
在有或没有中间jobs
命令的情况下再次键入将导致所有暂停的作业终止。要回答第二个问题,我将告诉您,不是Ubuntu或emacs这样。当您将应用程序置于后台运行时,这是正常现象。在这种情况下,sudo
您要求输入密码,但在后台询问,因此您看不到这个事实。要查看它,您应该使用以下fg
命令将作业调回前台:
radu@Radu: ~ $ sudo emacs tet.c &
[1] 7732
radu@Radu: ~ $ # now sudo emacs run in background so you can't see nothing about what's happening
radu@Radu: ~ $ fg
[sudo] password for radu:
之后,如果需要,您可以键入Ctrl+ Z将作业再次置于后台。然后,您可以再次运行'fg'命令以使作业回到前台,依此类推。
您收到此消息,是因为系统警告您有关与当前Shell相关的活动作业。
您可以列出这些运行/运行停止的作业:jobs
,
然后,您可以执行以下操作之一:
fg
与bg
背景相反),disown
删除从当前的shell这些工作没有杀死他们,exit
/ logout
两次一样,kill $(jobs -p)
添加-9
)如果您放弃它们,但仍想杀死所有已停止的进程,请尝试:
kill $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')
要回答有关的问题sudo
,它不会要求您输入密码,因为它需要具有活动的终端才能从标准输入中接收密码,并且通过在后台运行密码,shell不会等待命令完成,因此您不可能与命令进行交互。
在这种情况下,您有3种可能性:
&
)的情况下运行命令,从标准输入而非终端设备读取密码,sudo -S
例如
echo mypass | sudo emacs tet.c
通过以下visudo
命令将sudo配置为不要求输入密码:命令和编辑sudoers
文件。请参阅:为用户启用NOPASSWD
遇到作业停止错误时:
jobs
->您将看到状态为已停止的作业exit
->您可以退出终端
quit
:)(见superuser.com/questions/486496/how-do-i-exit-telnet)