egrep в сценарии bash не работает

Then it stops here: A start job is running for Hold until boot process finishes up (24s/ no limit)

El valor "24s" debería aumentar, si systemdtodavía está vivo -¿está aumentando? (¿El sistema está bloqueado o simplemente está atascado esperando algo que nunca se completa?)

El mensaje significa que systemdestá esperando que se completen los pasos de inicio -anteriores antes de habilitar el inicio de sesión. Pero por alguna razón, al menos uno de esos pasos anteriores de inicio -no está alcanzando un estado "en ejecución" o "completado".

Una forma de obtener más información sería mirar los mensajes anteriores para ver qué podría no estar alcanzando un buen estado.

Otra sería usar el arranque en modo de rescate desde los medios de instalación de Ubuntu para acceder al sistema y luego crear el directorio /var/log/journal/si no existe -que hace que systemdescriba registros persistentes. Luego puede hacer un intento de arranque, esperar hasta que alcance el estado de problema y luego hacer otro arranque en modo de rescate para ver los registros. Los siguientes comandos deberían ser útiles para ver los registros de systemd:

  • journalctl --list-bootsmuestra cada arranque que tiene persistentemente -registros almacenados y el número de índice para cada uno.
  • journalctl -xb <number>muestra el diario systemdpara la instancia de arranque especificada. El valor predeterminado para <number>es 0 para el arranque más reciente, pero es posible que desee probar también -1 (= el intento de arranque anterior al más reciente )si journalctl --list-bootsindica que existe.
2
14.05.2019, 12:45
1 ответ

Как написано на банке. Вы создаете имя команды egrep '2019-05-11|Total', а затем пытаетесь ее вызвать. Это не egrep, за которым следует параметр, а полное имя команды. То, что вы хотите, более вероятно:

totalSize=$(echo $s3ls| egrep "$currentDate|Total" | awk -F 'Total Size:' '{print $2}'|sed '/^$/d')

При необходимости вы можете использовать переменную для хранения параметра:

egrepParm="$currentDate|Total" 
totalSize=$(echo $s3ls| egrep "$egrepParm" | awk -F 'Total Size:' '{print $2}'|sed '/^$/d')

Некоторые скажут, что в скрипте лучше использовать grep -Eвместоegrep

PS :Команда с псевдонимом будет работать в командной строке/терминале, но не в сценарии, поэтому попытка выполнить команду в терминале не является доказательством того, что она будет работать в сценарии. В bash используйте type {commandname}, чтобы проверить, является ли имя реальной командой или псевдонимом. egrepможет быть реализован как псевдоним в некоторых версиях Unix, в моей Ubuntu это обычная команда.

7
27.01.2020, 21:52

Теги

Похожие вопросы