У меня была та же проблема. Вот то, что я вызвал в воображении в соответствии с другими рекомендациями, init.d учебные руководства и существующий debian сценарий, найденный на lsyncd googlecode текст ссылки сайта. Надежда это помогает другим, просто копия, и вставьте!
#!/bin/bash
#
# lsyncd This shell script takes care of starting and stopping
# lsyncd (the Live Syncing (Mirror) Daemon)
#
# Author: Randy Reddekopp not-public@usask.ca
#
# chkconfig: 2345 13 87
# description: Lsyncd uses rsync to synchronize local directories with a remote \
# machine running rsyncd. It watches multiple directories trees \
# through inotify. The first step after adding the watches is to \
# rsync all directories with the remote host, and then sync single \
# file by collecting the inotify events. So lsyncd is a light-weight \
# live mirror solution.
# pidfile: /var/run/lsyncd.pid
# processname: lsyncd
# Source function library.
. /etc/init.d/functions
PIDFILE="/var/run/lsyncd.pid"
LSYNCD_DIR="/usr/local/bin/"
start() {
echo -n "Starting Live Syncing Daemon: "
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
echo lsyncd already running: $PID
exit 1;
else
cd $LSYNCD_DIR
daemon ./lsyncd $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/lsyncd
return $RETVAL
fi
}
stop() {
echo -n "Shutting down Live Syncing Daemon: "
echo
killproc lsyncd
echo
rm -f /var/lock/subsys/lsyncd
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status lsyncd
;;
restart)
stop
start
;;
*)
echo "Usage: {start|stop|status|restart}"
exit 1
;;
esac
exit $?
Вставка тот код в/etc/init.d/lsyncd.
Полномочия файла изменения:
chmod 755/etc/init.d/lsyncd
В Вашем файле /etc/lsyncd.conf.xml необходимо не прокомментировать"
Затем Вы должны быть установлены запустить сервис!
/sbin/service lsyncd запускаются
С наилучшими пожеланиями, Randy
Я могу немного улучшить Марка Хендерсона, используя $ () вместо `и удалив grep с помощью более совершенного sed:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -antlp | \
sed -e "/telnet/s/^.*ESTABLISHED\ \|\/.*$//g")
Лично я считаю, что обратные кавычки затрудняют чтение; кроме того, они не вложены, в отличие от синтаксиса $ ()
strace -p $ (ss -npt | sed -n "/: $ (ss -npt | sed -n '/telnet/s/^.*\?:\([0 -9] \ + \). * / \ 1 / p ') \ + u / s /.*, \ (. * \),. * / \ 1 / p ")
Пока у вас есть только один telnet
работает, это будет strace
соответствующий сервер, если он есть.
Если его нет ( например вы telnet
ed на внешний сервер последним), strace
завершится ошибкой с strace: option требует аргумента - 'p'
strace -p $(netstat -tnp|awk -F'[ /]+' "/:$(netstat -tnp|awk -F'[ :]+'
"/\/telnet/{print \$5}") /&&/apache2/{print \$7}")
Или отформатирован для облегчения чтения и с неповрежденными флагами strace OP:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -tnp | \
awk -F'[ /]+' "/:$(netstat -tnp | awk -F'[ :]+' "/\/telnet/ \
{print \$5}") / && /apache2/ {print \$7}")
Разбивка, вначале внутреннее:
netstat -tnp | awk -F'[ :]+' "/\/telnet/ {print \$5}"
Покажи мне, без преобразования IP-адресов в имена DNS, все активные TCP-соединения. Передайте это в awk, который печатает пятое поле в любой строке, оканчивающейся на / telnet
, где поля разделены одним или несколькими пробелами и двоеточиями. Это поле будет исходным портом.
Для улучшения : Можно сделать более надежным, добавив | head -n 1
до конца или ; exit
внутри функциональной части awk, но в вашей исходной версии не было эквивалента, поэтому я не хотел делать эту длиннее.
netstat -tnp | awk -F'[ /]+' "/:**** / && /apache2/ {print \$7}")
****
здесь - это та часть, которую я уже объяснил выше. Здесь я' m ищет любую строку в netstat -tnp
, которая имеет тот же порт, что и исходный порт, который я обнаружил выше, и принадлежит Apache; когда я его нахожу, я печатаю седьмое поле (разделенное одним или несколькими пробелами или косыми чертами). Это PID дочернего элемента Apache.
Для улучшения : помимо возврата только одного PID (с помощью тех же методов, что и выше), самое большое, что я могу себе представить, - это быть более разборчивым, когда дело доходит до фактического соответствия dport в отличие от чего-то еще, что просто так совпало с шаблоном. Это было бы легко сделать, добавив двоеточия к FS ( -F
), но проблема возникает в смешанных ситуациях IPv4 и IPv6, когда в самом адресе могут быть двоеточия, что может надоедает довольно быстро. Это выглядело чертовски надежно, особенно с задним пространством.
sudo strace -o /tmp/strace -f -s4096 -r -p
Это прямая копия вашего исходного вопроса; Я не менял его ни в малейшей степени.
Если вы позволите мне добавить несколько дополнительных символов, я бы запустил следующую версию:
sudo strace -o /tmp/strace -f -s4096 -r -p $(netstat -tnp | \
awk -F'[ /]+' "/:$(netstat -tnp | awk -F'[ :]+' "/\/telnet/ \
{print \$5;exit}") / && /apache2/ {print \$7;exit}")
Попробуйте это, надеюсь, это поможет:
sudo strace -o /tmp/strace -f -s4096 -r -p `netstat -antlp | \
grep telnet | sed -e "s/^.*ESTABLISHED\ \|\/.*$//g"`