歡迎您光臨本站 註冊首頁

Linux中將Memcached註冊為系統服務

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

引言:

memcached是優秀的開源高性能分散式內存對象緩存系統。在Linux系統下編譯安裝后沒有自動註冊為系統服務。另外由於memcached基於libevent庫,該庫默認的編譯安裝位置為/usr/local/lib目錄,該目錄又不是多數linux發行版的默認庫載入路徑。因此在執行memcached之前需要修改默認載入路徑,將該路徑包含進去。雖然只需要設置一次但畢竟要設置,很麻煩。如果你又希望存放在該路徑下的庫不被程序自動搜尋到,就不能使用該方法。那麼怎麼才能有個完全的方法來解決呢?

解決方法:

既然memcached沒有被註冊為系統服務,那我們手動地去註冊。註冊系統服務需要編寫啟動腳本,一般要實現三個方法,分別是:start、stop和restart。並且該腳本要放置在/etc/init.d/目錄中。下面是我寫的服務腳本(腳本需要以root許可權編寫):

  1. #chkconfig: 345 60 60   
  2. #description: This Service is from memcached \   
  3. # which is high performance object cache system   
  4. #!/bin/sh   
  5. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH  
  6. memcached_process_name="memcached"  
  7. start(){  
  8.   echo "Starting Memcached Service with Port 11211"  
  9.   # note that the character ` is not single quotation, \   
  10.   # It is the left character of "1" key in your keyboard   
  11.   memcached_pid_list=`pidof $memcached_process_name`  
  12.   if test -n "$memcached_pid_list"  
  13.   then  
  14.     echo "Fail To Launch Memcached, Since It Has Already Started"  
  15.     exit 1  
  16.   else  
  17.     echo "Launching memcached with MaxMemory 64MB"  
  18.     /usr/local/bin/memcached -l 0.0.0.0 -p 11211 -m 64 -d -u root  
  19.     echo "Launch Memcached Successfully"  
  20.     exit 0  
  21.   fi;  
  22. }  
  23.   
  24. stop(){  
  25.   echo "Stopping Memcached Service..."  
  26.   memcached_pid_list=`pidof $memcached_process_name`  
  27.   if test -n "$memcached_pid_list"  
  28.   then  
  29.     echo "Find Memcached Process(es), Start To End Them"  
  30.     kill -9 $memcached_pid_list  
  31.     if test "$?" = "0"  
  32.     then  
  33.       echo "Success to Terminate All Memcached Processes"  
  34.     else  
  35.       echo "Can Not Terminate All Memcached Processes"  
  36.     fi;  
  37.     echo {1}quot;Finished Stopping Memcached Service"  
  38.     exit 0  
  39.   else  
  40.     echo "Can Not Find Any Memcached Process, Fail To Stop Service"  
  41.     exit 1  
  42.   fi;  
  43. }  
  44.   
  45.   
  46. case "$1" in  
  47.   start)  
  48.      start  
  49.      ;;  
  50.   stop)  
  51.      stop  
  52.      ;;  
  53.   restart)  
  54.      stop  
  55.      #sleep 3 seconds to wait for process's exit   
  56.      sleep 3  
  57.      start  
  58.      ;;  
  59.   *)  
  60.      echo {1}quot;Usage:$0 {start|stop|restart}"  
  61.      exit 2  
  62. esac  

編寫完畢后。對其賦予755許可權,即rwxr-xr-x(文件所有者具有讀寫執行許可權,同組用戶具有隻讀和執行許可權,其他用戶具有隻讀和執行許可權):

  1. [root@lxp2 init.d]# chmod 755 memcached  

腳本中指定了memcached監聽本地所有IP,埠為TCP的11211埠,默認為其分配64M的內存,如果想修改這些值,需要修改上面的配置文件start函數的如下兩行:

  1. echo "Launching memcached with MaxMemory 64MB"  
  2. /usr/local/bin/memcached -l 0.0.0.0 -p 11211 -m 64 -d -u root  

具體參數意義請參閱memcache的手冊man memcached。

手動啟動、停止和重啟服務命令為

service memcached start

service memcached stop

service memcached restart

雖然編寫了腳本,但是現在還不能讓系統自動載入服務,接下來:

在上述腳本中注意開始的三行:

  1. #chkconfig: 345 60 60   
  2. #description:This Service is from memcached \   
  3. # which is high performance object cache system  

#chkconfig和#description是必須要有的。

chkconfig后的第一段數字:345,表示在那些運行界別中會開啟此服務。當Linux系統以指定的運行級別來運行時,進入系統會自動調用服務的start;當Llinux系統以非指定的運行級別來運行時,進入系統后自動調用服務的stop來阻止服務啟動。

運行級別有7個等級:
等級0表示:表示關機
等級1表示:單用戶模式
等級2表示:無網路連接的多用戶命令行模式
等級3表示:有網路連接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:重新啟動

由於memcached在工作時需要使用網路連接,所以最低級別要在3才能正常工作。



[火星人 ] Linux中將Memcached註冊為系統服務已經有372次圍觀

http://coctec.com/docs/linux/show-post-65288.html