Intereting Posts
определить фактическое использование памяти несколькими процессами, которые разделяют большой сегмент памяти RVM не обнаружен в многопользовательской установке Установка XDG_DATA_HOME и XDG_CONFIG_HOME для компиляции / для каждой программы Установленные шрифты не отображаются, Linux Mint 15 64bit Как сохранить отдельный (более новый) стек glibc / gcc / … как не root для Linux Как создать более одного подкаталога с помощью ZSH? (на машине Debian) Как проверить, установлена ​​ли удаленная служба smb? Как я могу перечислить подкаталоги рекурсивно? Попытка подключиться через cl Solaris 11 и syslog над TLS Как можно контролировать поток ввода-вывода в определенном каталоге или файле Linux для чтения / записи байт? tmux new-window – дождитесь окончания сеанса? СООТВЕТСТВУЮЩЕЕ, УСТАНОВЛЕННОЕ состояние в iptables Блокировка ярлыка экрана не работает после обновления Fedora 16 Как заменить символ в sed, только если это происходит до буквы?

Как я могу завершить команду nc через 2 секунды?

Мне нужно написать сценарий обслуживания, который повторяет наши IP-адреса, проверяя их подключение к определенным службам, таким как nc -sip# mailin-01.mx.aol.com 25 .

У него есть флаг -w ... но это не то, что я думаю. То есть, я хочу, чтобы эта программа работала не более чем через 3 секунды, а места, в которые мы подключаемся, всегда бывают (если не будут решены основные сетевые проблемы, о которых сценарий не должен беспокоиться), а не его конкретная работа и будут замечены раньше скрипт запускается).

Мне просто нужно подключиться и посмотреть, получилось ли сообщение об ошибке. Это необходимо, прежде чем мы назначим IP для пользователя для своей веб-страницы (это альтернатива CPanel – мы хотим, чтобы наши собственные).

Самый простой способ сделать это – с помощью команды timeout . Команда timeout позволяет запустить указанную команду, и если эта команда не выйдет из собственной, она будет находиться в пределах определенного таймаута, timeout убьет.

Например

 # timeout 3 sleep 1; echo exit=$? exit=0 # timeout 3 sleep 5; echo exit=$? exit=124 # timeout 3 nc google.com 80; echo exit=$? nc: using stream socket exit=124 

timeout не определен в стандарте POSIX, поэтому он не гарантируется везде, но, похоже, он распространен.

http://www.varesano.net/blog/fabio/executing-program-x-seconds-then-killing-it-simple-bash-script

это сработало

 #!/bin/bash cmd=$1 seconds=$2 echo "Executing: ${cmd} for $seconds seconds" $cmd& cmdpid=$! sleep $seconds if [ -d /proc/$cmdpid ] then echo "terminating program PID:$cmdpid" kill $cmdpid fi