Закрыть ghostscript без "-c quit" или -dBATCH

Похоже, вы пропустили много файлов. Вероятно, вы не удалили все файлы пакетов, которые использует icinga, в вашем apt-get purge, а затем, когда вы удалили файлы вручную, вы оставили сломанные пакеты.

Failed to load environment filesявляется ссылкой в ​​юнит-файле SystemD icinga. Найдите его (в /etc/systemd/systemили/lib/systemd/system)и посмотрите, есть ли у него настройка EnvironmentFileи существует ли этот файл. Если он не существует, вам нужно выяснить, к какому пакету он принадлежит (, используяdpkg -S <file>)и выполнить apt-get install --reinstall <package>.

1
20.07.2019, 23:17
1 ответ

Ваша ловушка на EXITне выполняется специально, когда вы закрываете окно терминала или нажимаете Ctrl + C , она выполняется при выходе из оболочки.

Закрытие терминала убьет запущенную в терминале оболочку, а нажатие Ctrl + C в GhostScript завершит работу GhostScript, и, в зависимости от последующих команд, в конечном итоге также завершит работу оболочка.

Но обычный выход из GhostScript с -c quitтакже в конечном итоге завершит работу оболочки, а затем выполнит ловушку.

Если вы хотите сохранить файлы, отмените ловушку после успешного выхода GhostScript.

Относительно интерактивного режима GhostScript в руководстве сказано:

The interpreter exits gracefully when it encounters the "quit" command (either in a file or from the keyboard), at end-of-file, or at an interrupt signal (such as Control-C at the keyboard).

Опция -c quitвыполнит команду quitи тем самым завершит работу GhostScript. Вы можете выполнять произвольные команды с помощью -c. Таким образом, вы можете просто добавить quitк командам, которые вы передаете для преобразования, или вы можете передать команды на стандартный ввод, и GhostScript завершит работу в конце -файла -.

Редактировать

Синтаксис команды trap:

trap [-lp] [[arg] signal_spec...]

If arg is absent (and there is a single sigspec) or -, each specified signal is reset to its original disposition

Вы всегда можете указать другое trapдействие или не выполнять никаких действий. В этом примере сначала устанавливается команда echo original trap, затем echo modified trapи, наконец, отменяется ловушка, чтобы при выходе из оболочки не выполнялись никакие команды.

trap 'echo original trap' exit
# run some commands
trap 'echo modified trap' exit
# run some commands
trap - exit
# run some commands

Редактировать Вот пример:

Набрав quit, ловушка не выполняется.

$ bash -c 'trap "echo;echo exit" exit; gsnd -q ; trap - exit'
GS>quit
$

Набрав Ctrl + C , ловушка выполняется.

$ bash -c 'trap "echo;echo exit" exit; gsnd -q ; trap - exit'
GS>^C
exit
1
27.01.2020, 23:41

Теги

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