No sé acerca de las respuestas a continuación, pero en RHEL / Centos 7.6 init 1o init 3o init 5o init 6o init 0o runleveltodavía se comportan como siempre lo han hecho, y eso es todo lo que me importa. Sintaxis mucho más fácil entoncessystemctl blabla blabla.blabla
Dentro de SystemD (aemon), los niveles de ejecución se exponen como "Objetivos". El concepto sigue ahí, pero el flujo de trabajo para producir el resultado deseado para sus necesidades es diferente.
El adjunto debe aclarar este problema.
¿Cómo cambio el nivel de ejecución actual?
$ systemctl isolate runlevelX.target
¿Cómo cambio el nivel de ejecución predeterminado para el siguiente arranque?
# Create a symlink
$ ln -sf /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln -sf TARGETDESTINATION
-s crea un enlace simbólico
-f elimina el archivo de destino existente
O (como sugirió @centimane) simplemente use el systemdcomando "bendito" :
¿Puedo seguir usando el comando init para cambiar entre los niveles de ejecución?
drpaneas
2
Si su paquete systemd está construido con compatibilidad con SysV, incluirá un enlace simbólico telinit al binario systemd, que, cuando se llama telinit, correlacionará los niveles de ejecución 0-6 con los objetivos systemd: consulte telinit (8) para obtener una lista de esas asignaciones .
Wieland
2
Para cambiar el objetivo predeterminado, debe usar en systemctl set-default [target name].targetlugar de crear manualmente el enlace.
Centimane
13
No. Como la gente del sistema mismo escribió dos veces, una en su telinitmanual y otra en su runlevelmanual, los niveles de ejecución son "obsoletos". Puedes olvidarte de los niveles de ejecución.
Estas cosas no existen en absoluto en systemd, con algunas cuñas de compatibilidad.
Hay algunos enlaces simbólicos para los nombres de los objetivos, pero estos objetivos nunca los usa realmente systemd.
Más bien, el proceso bootstrap emplea a default.target(y de ahí uno o ambos de a graphical.targety a multi-user.target), a rescue.targeto an emergency.target. Y el proceso de apagado involucra a shutdown.target, a reboot.target, a halt.targeto a poweroff.target. No hay objetivos de nivel de ejecución involucrados ni en bootstrap ni en apagado.
El telinitcomando, que uno podría pensar que usa los enlaces simbólicos de compatibilidad para mapear sus argumentos de línea de comandos, tampoco lo hace. Hay una mesa de cableado en el código fuente del telinitprograma, y los números 2, 3, 4, y 5como argumentos para el comando están cableados para asignar a multi-user.targety graphical.target.
systemd-update-utmp También tiene una mesa interna cableada.
No hay una "tabla de inicio" de cosas de nivel de ejecución. systemd solo es compatible con van Smoorenburg rc, no con van Smoorenburg init.
No hay ningún valor de "nivel de ejecución actual" mantenido por el propio systemd. Más bien, la casi totalmente indocumentado systemd-update-utmpcomando opera internamente en términos de la activación de los estados rescue.target, multi-user.targety graphical.target.
systemd-sysv-generator, el generador de unidades de servicio de compatibilidad con versiones anteriores de systemd, combina los /etc/rc[234].ddirectorios en una sola Wanted-Byrelación con multi-user.targetlas unidades de servicio generadas. No existe una referencia real para ejecutar niveles en las unidades de servicio generadas. (Solía haber, hace años, pero la gente del sistema descubrió que esto salió mal, porque no estaban siendo referenciados en ningún otro lugar).
Si uno es un usuario de un sistema que construye systemd como lo hizo Arch Linux para el interrogador en " ¿Por qué` init 0` da como resultado "Exceso de argumentos" en la instalación de Arch? ", Uno ni siquiera obtiene las cuñas de compatibilidad, y ordena como init 0resultado en el comportamiento systemd "nativo", que consiste en quejarse de que el comando ha sido invocado incorrectamente.
Otras lecturas
Lennart Poettering y cols runlevel. páginas de manual de systemd. Freedesktop.org.
Lennart Poettering y cols telinit. páginas de manual de systemd. Freedesktop.org.
Lennart Poettering y cols bootup. páginas de manual de systemd. Freedesktop.org.
Como puede ver, el concepto de niveles de ejecución existe, pero es bastante obsoleto debido al hecho de que los archivos runlevel.target no son en realidad archivos "reales" sino enlaces suaves al esquema de archivos nuevo, moderno y mejor nombrado que A systemd le gusta llamarlos "objetivos".
Entonces, si desea hacer algo así telinit 5, sería así: systemctl isolate runlevel5.target
que es idéntico a: systemctl isolate graphical.target(recomendado en mi opinión).
En caso de que esté interesado en conocer todos los objetivos posibles:
Sí, creo que estás entendiendo esto correctamente. Seré un adoptante tardío de SystemD, ya que el sistema de procedimiento, paso a paso, INIT.D es con lo que estoy más familiarizado ... Aplaudo que esté explorando SystemD. La mejor parte de SystemD es su multihilo paralelo, que permite un arranque más rápido. El arranque de subprocesos múltiples se puede lograr con INIT.D, pero requiere secuencias de comandos BASH fuertes.
Tyler Maginnis
Por cierto, ls -lles equivalente a ls -l. Es posible que desee adquirir el hábito de usar ls -ld.
G-Man dice 'Restablece a Monica'
telinit 0/ telinit 6Todavía trabajo. Dado que esto ayuda con la migración, y creo que la mayoría de las distribuciones aún no ven una razón para abandonar el soporte todavía. isolateclaramente aspiraba a imitar cómo funcionan los niveles de ejecución, pero hay varios casos perversos. Recomiendo ignorar todas las instrucciones isolate runlevel5.targeto incluso isolate graphical.target. Ejemplo de caso límite: github.com/systemd/systemd/issues/6505
sourcejedi
0
systemd introdujo objetivos como contrapartida de los niveles de ejecución en el sistema de inicio sysV. Los desarrolladores de sytemd lo hicieron casi compatible con la mayoría de los scripts sysV. Lo mismo sucede para
telinit <runlevel>. Esto se traduce a systemd equivalente.
Por ejemplo telinit 0, apaga la máquina. systemd tiene poweroff.target para hacer lo mismo que runlevel 0 . Entonces telinit 0es traducido por systemd para activar poweroff.target .
init 1
oinit 3
oinit 5
oinit 6
oinit 0
orunlevel
todavía se comportan como siempre lo han hecho, y eso es todo lo que me importa. Sintaxis mucho más fácil entoncessystemctl blabla blabla.blabla
Respuestas:
SystemD Run-Level Low-Down
Dentro de SystemD (aemon), los niveles de ejecución se exponen como "Objetivos". El concepto sigue ahí, pero el flujo de trabajo para producir el resultado deseado para sus necesidades es diferente.
El adjunto debe aclarar este problema.
¿Cómo cambio el nivel de ejecución actual?
¿Cómo cambio el nivel de ejecución predeterminado para el siguiente arranque?
ln -sf TARGET DESTINATION
-s
crea un enlace simbólico-f
elimina el archivo de destino existenteO (como sugirió @centimane) simplemente use el
systemd
comando "bendito" :¿Cómo identifico el nivel de ejecución actual?
fuente
systemctl set-default [target name].target
lugar de crear manualmente el enlace.No. Como la gente del sistema mismo escribió dos veces, una en su
telinit
manual y otra en surunlevel
manual, los niveles de ejecución son "obsoletos". Puedes olvidarte de los niveles de ejecución.Estas cosas no existen en absoluto en systemd, con algunas cuñas de compatibilidad.
default.target
(y de ahí uno o ambos de agraphical.target
y amulti-user.target
), arescue.target
o anemergency.target
. Y el proceso de apagado involucra ashutdown.target
, areboot.target
, ahalt.target
o apoweroff.target
. No hay objetivos de nivel de ejecución involucrados ni en bootstrap ni en apagado.telinit
comando, que uno podría pensar que usa los enlaces simbólicos de compatibilidad para mapear sus argumentos de línea de comandos, tampoco lo hace. Hay una mesa de cableado en el código fuente deltelinit
programa, y los números2
,3
,4
, y5
como argumentos para el comando están cableados para asignar amulti-user.target
ygraphical.target
.systemd-update-utmp
También tiene una mesa interna cableada.rc
, no con van Smoorenburginit
.systemd-update-utmp
comando opera internamente en términos de la activación de los estadosrescue.target
,multi-user.target
ygraphical.target
.systemd-sysv-generator
, el generador de unidades de servicio de compatibilidad con versiones anteriores de systemd, combina los/etc/rc[234].d
directorios en una solaWanted-By
relación conmulti-user.target
las unidades de servicio generadas. No existe una referencia real para ejecutar niveles en las unidades de servicio generadas. (Solía haber, hace años, pero la gente del sistema descubrió que esto salió mal, porque no estaban siendo referenciados en ningún otro lugar).Si uno es un usuario de un sistema que construye systemd como lo hizo Arch Linux para el interrogador en " ¿Por qué` init 0` da como resultado "Exceso de argumentos" en la instalación de Arch? ", Uno ni siquiera obtiene las cuñas de compatibilidad, y ordena como
init 0
resultado en el comportamiento systemd "nativo", que consiste en quejarse de que el comando ha sido invocado incorrectamente.Otras lecturas
runlevel
. páginas de manual de systemd. Freedesktop.org.telinit
. páginas de manual de systemd. Freedesktop.org.bootup
. páginas de manual de systemd. Freedesktop.org./etc/inittab
Es cosa del pasado. . Respuestas frecuentes.fuente
Muchas gracias. Entonces, si entendí correctamente:
Por ejemplo:
Salida:
Como puede ver, el concepto de niveles de ejecución existe, pero es bastante obsoleto debido al hecho de que los archivos runlevel.target no son en realidad archivos "reales" sino enlaces suaves al esquema de archivos nuevo, moderno y mejor nombrado que A systemd le gusta llamarlos "objetivos".
Entonces, si desea hacer algo así
telinit 5
, sería así:systemctl isolate runlevel5.target
que es idéntico a:systemctl isolate graphical.target
(recomendado en mi opinión).En caso de que esté interesado en conocer todos los objetivos posibles:
fuente
ls -ll
es equivalente als -l
. Es posible que desee adquirir el hábito de usarls -ld
.telinit 0
/telinit 6
Todavía trabajo. Dado que esto ayuda con la migración, y creo que la mayoría de las distribuciones aún no ven una razón para abandonar el soporte todavía.isolate
claramente aspiraba a imitar cómo funcionan los niveles de ejecución, pero hay varios casos perversos. Recomiendo ignorar todas las instruccionesisolate runlevel5.target
o inclusoisolate graphical.target
. Ejemplo de caso límite: github.com/systemd/systemd/issues/6505systemd introdujo objetivos como contrapartida de los niveles de ejecución en el sistema de inicio sysV. Los desarrolladores de sytemd lo hicieron casi compatible con la mayoría de los scripts sysV. Lo mismo sucede para
telinit <runlevel>
. Esto se traduce a systemd equivalente.Por ejemplo
telinit 0
, apaga la máquina. systemd tiene poweroff.target para hacer lo mismo que runlevel 0 . Entoncestelinit 0
es traducido por systemd para activar poweroff.target .Pero existen algunos problemas de compatibilidad con los sistemas de inicio sytemd y sysV-> https://www.freedesktop.org/wiki/Software/systemd/Incompatibilities .
fuente