引言:
memcached是優秀的開源高性能分散式內存對象緩存系統。在Linux系統下編譯安裝后沒有自動註冊為系統服務。另外由於memcached基於libevent庫,該庫默認的編譯安裝位置為/usr/local/lib目錄,該目錄又不是多數linux發行版的默認庫載入路徑。因此在執行memcached之前需要修改默認載入路徑,將該路徑包含進去。雖然只需要設置一次但畢竟要設置,很麻煩。如果你又希望存放在該路徑下的庫不被程序自動搜尋到,就不能使用該方法。那麼怎麼才能有個完全的方法來解決呢?
解決方法:
既然memcached沒有被註冊為系統服務,那我們手動地去註冊。註冊系統服務需要編寫啟動腳本,一般要實現三個方法,分別是:start、stop和restart。並且該腳本要放置在/etc/init.d/目錄中。下面是我寫的服務腳本(腳本需要以root許可權編寫):
-
-
-
-
- export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- memcached_process_name="memcached"
- start(){
- echo "Starting Memcached Service with Port 11211"
-
-
- memcached_pid_list=`pidof $memcached_process_name`
- if test -n "$memcached_pid_list"
- then
- echo "Fail To Launch Memcached, Since It Has Already Started"
- exit 1
- else
- echo "Launching memcached with MaxMemory 64MB"
- /usr/local/bin/memcached -l 0.0.0.0 -p 11211 -m 64 -d -u root
- echo "Launch Memcached Successfully"
- exit 0
- fi;
- }
-
- stop(){
- echo "Stopping Memcached Service..."
- memcached_pid_list=`pidof $memcached_process_name`
- if test -n "$memcached_pid_list"
- then
- echo "Find Memcached Process(es), Start To End Them"
- kill -9 $memcached_pid_list
- if test "$?" = "0"
- then
- echo "Success to Terminate All Memcached Processes"
- else
- echo "Can Not Terminate All Memcached Processes"
- fi;
- echo {1}quot;Finished Stopping Memcached Service"
- exit 0
- else
- echo "Can Not Find Any Memcached Process, Fail To Stop Service"
- exit 1
- fi;
- }
-
-
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
-
- sleep 3
- start
- ;;
- *)
- echo {1}quot;Usage:$0 {start|stop|restart}"
- exit 2
- esac
編寫完畢后。對其賦予755許可權,即rwxr-xr-x(文件所有者具有讀寫執行許可權,同組用戶具有隻讀和執行許可權,其他用戶具有隻讀和執行許可權):
- [root@lxp2 init.d]# chmod 755 memcached
腳本中指定了memcached監聽本地所有IP,埠為TCP的11211埠,默認為其分配64M的內存,如果想修改這些值,需要修改上面的配置文件start函數的如下兩行:
- echo "Launching memcached with MaxMemory 64MB"
- /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
雖然編寫了腳本,但是現在還不能讓系統自動載入服務,接下來:
在上述腳本中注意開始的三行:
#chkconfig和#description是必須要有的。
chkconfig后的第一段數字:345,表示在那些運行界別中會開啟此服務。當Linux系統以指定的運行級別來運行時,進入系統會自動調用服務的start;當Llinux系統以非指定的運行級別來運行時,進入系統后自動調用服務的stop來阻止服務啟動。
運行級別有7個等級:
等級0表示:表示關機
等級1表示:單用戶模式
等級2表示:無網路連接的多用戶命令行模式
等級3表示:有網路連接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:重新啟動
由於memcached在工作時需要使用網路連接,所以最低級別要在3才能正常工作。