But I can’t find anywhere else information on how to leave tcpdump working as a service. Logging should be kept constantly.
Если вы хотите, чтобы tcpdump работал в фоновом режиме и выполнял запись в файл журнала, вы можете сделать что-то вроде
tcpdump -i INTERFACENAME -e > /path/to/log.txt 2>&1 &
Имейте в виду, что строк будет много, поэтому применяйте фильтры по мере необходимости.
Шебанг действует только в том случае, если вы выполняете сценарий напрямую без указания способа его запуска ; то есть с чем-то вроде ./scratch.sh
или /path/to/scratch.sh
или поместив его в каталог в вашем PATH
и просто используя scratch.sh
.
Если вы запускаете его с помощью какой-либо другой команды, она управляет тем, что с ней делается, (переопределяя шебанг ). Если вы используете bash scratch.sh
, он запускается в bash
; если вы используете zsh scratch.sh
, он запускается в zsh
; если вы используете sh
, он работает в любом sh
в вашей системе(dash
в вашем конкретном случае ).
Если вы используете source scratch.sh
или . scratch.sh
, он запускается в текущей оболочке , какой бы она ни была. В этом вся цель команд .
и source
. И снова шебанг здесь игнорируется.
Вы не можете этого сделать. . script
или source script
просто включает в себя script
, для этого не требуется отдельная стандартная или нестандартная оболочка -. Что касается шебангов, то для zsh
это просто комментарии.
Однако вы можете поручить zsh
(попытаться )временно эмулировать стандартную оболочку. YMMV.
emulate sh -c '../scratch.sh'
emulate which_sh -c str
будет оценивать str
с указанной эмуляцией, временно действующей, и, что более важно, заставит ее «прилипать» к любым функциям, определенным во время оценки str
, вызывая автоматическое включение режима эмуляции во время их выполнения..