Georgi Chorbadzhiyski wrote:
Alexander N. wrote:
Georgi Chorbadzhiyski wrote:
Питах вече в httpd-devel и -users ама никой не може да ми отговори,
та реших, че може би някой из lug-а е по-светнат.
Проблема ми е следният: когато apache трансферира големи файлове и
по някаква причина реша, че искам да прекратя трансфера, какъвто
и сигнал да пращам на httpd-то, което сервира, то или игнорира сигнала
или просто умира, прекратявайки трансфера без да записва нищо
в логовете.
В мануала на апачето пише следното:
* *"graceful restart" sigusr1 signal*
zfile kill -s sigusr1 /apache_parent_pid/ or
zfile kill -s sigusr1 `cat /usr/local/apache/logs/httpd.pid`
The Apache parent asks its children to exit when they're finished
with any requests they're currently handling. Then the existing
parent re-reads the configuration file(s) and creates new children
to replace the exiting ones.
"Graceful restart" can be used to pick up new configuration files
without disrupting traffic.
* http://httpd.apache.org/docs/1.3/stopping.html
Но май няма да ти свърши работа, защото така може да си го чакаш до утре
спре....
Именно. Не ми върши работа защото аз искам да прекъсна трансфера, а не да го
чакам да си спре когато клиента пожелае.
Не ме бийте за следната грозотия, която работи /по-лесно ми беше да я направя
нея
вместо да се кривя да компилирам tcpkill ot dsniff/.
Скрипт ugly_tcpkill.sh пуска се
ugly_tcpkill.sh PID_OF_HTTPD_PROCESS IP_OF_CLIENT
#!/bin/sh
lsof -n -i [EMAIL PROTECTED] | grep $1 | tr -s ' ' | cut -d" " -f8 | cut -d">" -f2 | tr :
" " | while read IP PORT
do
iptables -I OUTPUT -p tcp -d $IP --dport $PORT -j REJECT --reject-with
tcp-reset
sleep 2
iptables -D OUTPUT -p tcp -d $IP --dport $PORT -j REJECT --reject-with
tcp-reset
done
Не го използвайте в този вид моля, защото не отговарям за грешките, които са
очевадни. :-)
Аха, само като идея, няма ли да е по добре да се комбинират горните 2.
Първо да кажеш на родителския процес да чака да привършат дъщерните
процеси и после тях да утрепеш ?