Escribí help suspendy obtuve esta breve explicación:
suspend: suspend [-f]
Suspend shell execution.
Suspend the execution of this shell until it receives a SIGCONT signal.
Unless forced, login shells cannot be suspended.
Options:
-f force the suspend, even if the shell is a login shell
Exit Status:
Returns success unless job control is not enabled or an error occurs.
Cómo entiendo esto es: escribo suspendy el terminal se congela, ni siquiera strg + c puede descongelarlo. Pero cuando abro otro terminal y busco el PID para el congelado y kill -SIGCONT PID-NRescribo una señal SIGCONT se envía al terminal congelado y lo descongela, para que se descongele.
Pero, ¿cuál es el propósito real de suspender una terminal? ¿Qué aplicaciones diarias son típicas para ello? ¿Qué tenían en mente las personas que lo convirtieron en una concha?
bash
signals
suspend
shell-builtin
Sharkant
fuente
fuente

Respuestas:
Si inicia un shell desde otro shell, puede suspender el interno. Diga al usar
suy querer volver al usuario normal por un momento:(Si hace eso, no olvide el shell privilegiado abierto en segundo plano ...)
Del mismo modo, si escapa a un shell desde algún otro programa (el
!comando en, por ejemploless), aún puede suspender el shell. Pero no esperaría que muchos otros programas lo manejen bien cuando lanzan un subproceso, que luego se suspende.fuente
vime hice un:shpara obtener una subshell (específicamente, unazshsubshell). La ejecuciónsuspendme introdujo en el shell original (suspendió tanto el subshell como el vim).zshparece más inteligente que esobash, intenté escapar de amboslessyvi(Debian'svim.tiny): tambiénzshdetuve la aplicación principal,bashcolgué todo.basha lasbashobras sin embargo.Eso es equivalente a presionar Ctrl+Zotros comandos.
Suspende el shell y devuelve el control al shell principal o al proceso, si lo hay.
Ejemplo:
La característica proviene de csh, el shell de BSD (de donde proviene el control del trabajo) a principios de los 80 .
En AT&T
ksh, es un alias incorporado parakill -s STOP $$( sí, ¡sin las comillas! )En su caso,
bashprobablemente fue el que inició directamente el emulador de terminal. Y su emulador de terminal no esperaba que se suspendiera el proceso.Ese
bashfue un líder de sesión. Si el líder de la sesión se suspende, si consideramos los terminales antiguos, el usuario no tendrá forma de reanudarlo.bashaborda eso al negarsesuspendsi es un shell de inicio de sesión. Pero en su caso, su emulador de terminal probablemente no se iniciabashen el modo de inicio de sesión, por lo que la protección no está en su lugar.zshymkshno tienen el problema porque envían una señalSIGTSTP(la que también se envió Ctrl+Z) como csh en lugar deSIGSTOP(y al grupo de proceso de la persona que llamamkshcomo en csh, y al grupo de proceso principal del shell parazsh, no$$solo el proceso )SIGTSTPse ignora cuando se entrega a un grupo de proceso huérfano y el grupo del líder califica. La idea es que SIGTSTP no debe suspender algo que un usuario no puede reanudar.En
mkshoyash, también se puede usarsuspendpara que una subshell se suspenda:Eso no funcionaría con
zsheso envía el SIGTSTP al grupo de proceso principal en lugar del llamador. En cualquier shell que tengakillincorporado, siempre se puede usarkill -s TSTP 0en su lugar.fuente
command .... &pero olvidé el&y ahora deseo poder agregarlo sin interrumpir el comando): puede:ctrl-zy luego escribir:bgpara reanudar la última tarea suspendida en segundo plano. (obg %npara hacer esto con el número de tarean. Utilícelojobspara obtener una lista de tareas suspendidas o en ejecución)suspendcomando real .