如何调试Systemctl,以memcached为例。

背景:有时候我们使用systemctl命令,如简单点的systemctl start memcached来讲,出现错时,会有一些提示,但是提示的内容是变量,其并没有将参数给编译后的值放入,于是出现如下所示,但是要失败了怎么排查这些参数呢?此文就讲这个问题,如果不是为了linux开机启动提速而并行启动外,这个systemctl其本质是想接管很多东西,但也带来了很多麻烦,难怪linus对此有一定的意见,系统要保持简单,好用。像开机慢可以少开机或不关机嘛,学学人家苹果升级在半夜,你慢就慢,谁管你,从策略上就规避了,把技术搞复杂还是简单是一门哲学,而创始人的价值就在于坚守设计艺术,而不光是技术。

● memcached.service - Memcached     Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled; vendor preset: disabled)     Active: inactive (dead) since Fri 2018-07-20 18:48:50 CST; 19h ago    Process: 15266 ExecStart=/usr/local/memcached/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS (code=exited, status=0/SUCCESS)  Main PID: 15266 (code=exited, status=0/SUCCESS)  

失败:

systemctl start memcached  Job for memcached.service failed because the control process exited with error code. See "systemctl status memcached.service" and "journalctl -xe" for details.  
[Unit]  Description=Memcached  Before=httpd.service  After=network.target    [Service]  Type=simple  ExecStartPre=/bin/bash -l -c 'echo "/usr/local/memcached/bin/memcached" -u $USER -p $PORT -m $CACHESIZE -c $MAXC  ONN $OPTIONS > /tmp/systemctl.debug'  EnvironmentFile=-/etc/sysconfig/memcached  ExecStart=/usr/local/memcached/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS    [Install]  WantedBy=multi-user.target  

/etc/sysconfig/memcached

PORT="11211"  USER="memcached"  MAXCONN="1024"  CACHESIZE="64"  OPTIONS=" -vv >> /data/logs/memcached/11211/memcached.log 2>&1"  
systemctl daemon-reload  systemctl start memcached  systemctl status memcached.service    Active: failed (Result: exit-code) since Sat 2018-07-21 14:35:22 CST; 5s ago    Process: 11417 ExecStart=/usr/local/memcached/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS (code=exited, status=71)    Process: 11399 ExecStartPre=/bin/bash -l -c echo "/usr/local/memcached/bin/memcached" -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS > /tmp/systemctl.debug (code=exited, status=0/SUCCESS)  Main PID: 11417 (code=exited, status=71)  

如果有错,需要挑食的参数查看 /tmp/systemctl.debug:

cat /tmp/systemctl.debug  /usr/local/memcached/bin/memcached -u root -p 11211 -m 64 -c 1024 -vv >> /data/logs/memcached/11211/memcached.log 2>&1  

原文出处:jackxiang -> https://jackxiang.com/post/9829/

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。