주기적으로 서비스 재시작하려면 어떤식으로 하는게 제일 좋은가요?

jinundeyo의 이미지

제목과 같이...
주기적으로 서비스 재시작하려면 어떤식으로 하는게 제일 좋은가요?
주로 쓰시는 방법이 뭔지 알고 싶습니다...

==============================================================
제가 사용하는 방식은... crontab입니다.

1. crontab -e
00,05,10,15,20,25,30,35,40,45,50,55 * * * * su - root '/home/servicerestart.sh'

위와 같이 해서 5분주기로 servicerestart.sh 스크립트를 실행합니다.

servicerestart.sh 안에서 다음과 같이
...
service named restart
exit 0

을 하였습니다.

물론 동작은 잘 됩니다만...
5분에 하나씩 프로세스가 생성이 된 것이 close가 되질 않아서 다음과 같이 남아있습니다.

pstree -p | grep cron
├─crond(3671)─┬─crond(9850)─┬─sendmail(9897)───postdrop(9900)
│               ├─crond(9936)─┬─sendmail(9981)───postdrop(9984)
│               ├─crond(10011)─┬─sendmail(10056)───postdrop(10058)
│               ├─crond(10083)─┬─sendmail(10128)───postdrop(10131)
│               ├─crond(10156)─┬─sendmail(10202)───postdrop(10205)
│               ├─crond(10228)─┬─sendmail(10273)───postdrop(10275)
│               ├─crond(10301)─┬─sendmail(10347)───postdrop(10350)
│               ├─crond(10373)─┬─sendmail(10418)───postdrop(10420)
│               ├─crond(10448)─┬─sendmail(10495)───postdrop(10498)
│               ├─crond(10532)─┬─sendmail(10577)───postdrop(10579)
│               ├─crond(10606)─┬─sendmail(10651)───postdrop(10653)
│               ├─crond(10678)─┬─sendmail(10723)───postdrop(10725)
│               ├─crond(10752)─┬─sendmail(10798)───postdrop(10800)
│               ├─crond(10824)─┬─sendmail(10869)───postdrop(10872)
│               └─crond(10920)─┬─sendmail(10966)───postdrop(10969)
.....

시간이 좀 흐르고 나면 리눅스를 리부팅해야하는 상태가 되기도 합니다.

[b]** 주기적으로 서비스를 재시작하는 다른 좋은 방법이 있거나...
제가 처한 문제를 해결하는 방법을 아시는 분 없으신가요??[/b]

baboda4u의 이미지

1. IPC를 이용하여 프로세스의 존재 유무를 확인하는 코드를 초기에 집어 넣는다. 즉 프로세스가 살아 있으면

그냥 나오는 구문을 넣어 주시면...똑같은 프로세스가 계속 실행되지 않겠죠?

2. 프로세스가 실행될때 pid를 특정위치에 저장해 놓고 이를 읽어 들여서 프로세스가 존재하면...

pid를 이용하여 프로세스를 죽이고...다시 실행시키시던가...아님 1번에서 처럼 프로세스가 존재함으로

그냥 나오는 구문을 넣어 준다.

결국, 프로그램에서 프로세스를 확인하여 살리던지 그냥 놔두던지 하면 될것 같습니다. ^^;

============================
Stay Hungry, Stay Foolish

============================
Stay Hungry, Stay Foolish

dragonkun의 이미지

root 권한이 있다면 /etc/crontab 에 아래와 같이 하지 않고, su로 세션을 열어서 하시는 건 이유가 있나요?

# m h dom mon dow user command
0/5 * * * * root service named restart

---
Emerging the World!

Emerging the World!

jinundeyo의 이미지

dragonkun님 그런 간단한 방법이... ㅡ.ㅡ;;
왜 생각을 못 했을까요 ㅠㅠ

아.. 이것저것 한다고 패닉 상태입니다...

그리고, 0/5 는... 어떤 뜻인가요? 5분마다 되는 건가요?

jinundeyo의 이미지

root로 들어가서 /etc/crontab 를 해도 위와 같이 프로세스가 남네요...
쩝..

baboda4u님이 말씀하신 것과 비슷하게...

pid를 알아낼 수 있다면 좋겠는데...

pstree 명령어로 최상위 crond 말고 그 밑에 있는 놈들의 pid 들을 가져올 방법이 있나요?

warpdory의 이미지

servicerestart.sh 파일 앞쪽에다가...

ps aux | grep -E "postdrop" | grep -v grep | awk '{ print $2 }' | xargs kill -s 9
ps aux | grep -E "sendmail" | grep -v grep | awk '{ print $2 }' | xargs kill -s 9
ps aux | grep -E "named" | grep -v grep | awk '{ print $2 }' | xargs kill -s 9

이런 걸 넣으면 postdrop, sendmail, named 이라는 이름을 가진 프로세스를 찾아서 죽이게 될 겁니다.

그 다음에 다시

service named restart
service sendmail restart

등 ...

을 하시면 될 것 같습니다.

---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.
http://akpil.egloos.com


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

jinundeyo의 이미지

태그 처리를 안해서 글이 보기 힘들었었네요...

문제는 pstree 하면 crond 서비스 프로세스 밑에 똑같이 crond가 생기는데요...

아래와 같이 sendmail을 하면
ps aux | grep -E "sendmail" | grep -v grep | awk '{ print $2 }' | xargs kill -s 9

├─crond(3671)─┬─crond(9850)─┬─sendmail(9897)───postdrop(9900)
이랬던 것이 
├─crond(3671)─┬─crond(9850)─┬─sendmail(9897)
이렇게 됩니다...

즉, sendmail 밑에 postdrop만 없어지더라구요...

제가 kill 하고 싶은 놈들은 9850입니다..(즉, crond(3671) 빼고 전부 삭제하고 싶은거죠...)

pstree -p | grep cron
├─crond(3671)─┬─crond(9850)─┬─sendmail(9897)───postdrop(9900)
│               ├─crond(9936)─┬─sendmail(9981)───postdrop(9984)
│               ├─crond(10011)─┬─sendmail(10056)───postdrop(10058)
│               ├─crond(10083)─┬─sendmail(10128)───postdrop(10131)
│               ├─crond(10156)─┬─sendmail(10202)───postdrop(10205)
│               ├─crond(10228)─┬─sendmail(10273)───postdrop(10275)
│               ├─crond(10301)─┬─sendmail(10347)───postdrop(10350)
│               ├─crond(10373)─┬─sendmail(10418)───postdrop(10420)
│               ├─crond(10448)─┬─sendmail(10495)───postdrop(10498)
│               ├─crond(10532)─┬─sendmail(10577)───postdrop(10579)
│               ├─crond(10606)─┬─sendmail(10651)───postdrop(10653)
│               ├─crond(10678)─┬─sendmail(10723)───postdrop(10725)
│               ├─crond(10752)─┬─sendmail(10798)───postdrop(10800)
│               ├─crond(10824)─┬─sendmail(10869)───postdrop(10872)
│               └─crond(10920)─┬─sendmail(10966)───postdrop(10969)
.....
bushi의 이미지

정보가 적습니다.

postfix 를 쓰시나보네요.
named 를 restart 하시려하고요.
crond 가 실행결과를 보고하려고 email 보내다 hang 된 것 같고요.

왜 postfix/sendmail 이 멍때리게 됐는지 정확한 이유는 모르겠지만,
/var/log/messages 나 /var/log/cron 에 특별한 에러메시지가 없다면...
DNS name resolving 을 의심해보세요.

5분마다 named restart 하신다면,
혹시 DHCP 등 유동ip 에 대한 DNS 서비스 같은 것을 간단하게 하시려하는 건가요 ?

OTL

송효진의 이미지

어쩌면 named 에 HUP 한번 주면 간단하게 처리될 문제일지도 모르겠네요.
service named reload 명령이 있나요?

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

monovision의 이미지

HUP 가 정답인듯 합니다.
named 에 reload 옵션 있습니다.~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.