Как я могу проверить, запущен ли процесс скрипта оболочки?

Вам нужно установить procmail и dovecot, только если вы хотите превратить машину разработчика в почтовый сервер. Их не нужно устанавливать для подключения к удаленным почтовым серверам.

  • 993 / tcp используется для IMAP через SSL. Если вы не можете заставить JavaMail делать это изначально, вы можете использовать stunnel для выполнения части SSL / TLS.
  • 465 / tcp используется для SMTP-over-SSL. То же самое и с stunnel .

Обратите внимание, что stunnel позволяет статически настраивать связь с несколькими серверами. Вы настраиваете stunnel для прослушивания порта на локальном хосте и прокси для удаленного сервера. Несколько удаленных серверов / портов означают несколько экземпляров stunnel. Разумно запустить несколько экземпляров, но если вам нужно поговорить с произвольными серверами, вам нужно выяснить, как заставить JavaMail делать это. Но это похоже на вопрос программирования для Stack Overflow .

(Кстати: в качестве альтернативы поддержке 465 / tcp вы можете настроить локальный почтовый сервер, такой как postfix, и заставить JavaMail отправлять электронную почту на локальный сервер, а затем позволить этому серверу обрабатывать связь с удаленными почтовыми серверами. Но это гораздо больше работы, если только в этом нет необходимости. И это усложняет обработку ошибок.)

0
28.07.2018, 04:35
1 ответ

Когда вы выполняете сценарий оболочки, он запускает процесс, известный как подоболочка. Как дочерний процесс основной оболочки, подоболочка выполняет список команд в сценарии оболочки какbatch(так -, что называется «пакетной обработкой» ).

В некоторых случаях может потребоваться узнать идентификатор процесса (PID )подоболочки, в которой выполняется сценарий оболочки.

В баш,PID процесса подоболочки сценария оболочки хранится в специальной переменной с именем «$$». Эта переменная доступна только для чтения -, и вы не можете изменить ее в сценарии оболочки. Например:

$ cat xyz.sh
#!/bin/bash
echo "PID of this script: $$"

Что дает следующий результат

PID of this script: XXXX

Оболочка bash экспортирует несколько других переменных -только для чтения. Например, PPID хранит идентификатор родительского процесса подоболочки (, т. е. основной оболочки ). UID хранит идентификатор текущего пользователя, выполняющего скрипт. Вот так (только пример)

#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $

Что дает вывод

PID of this script: XXXX 
PPID of this script: XXXX 
UID of this script: XXXX
0
28.01.2020, 04:16

Теги

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