首页 systemd 开机无法启动privoxy
文章
取消

systemd 开机无法启动privoxy

系统环境:ubuntu15.10 64bit , privoxy 3.0.24

代理环境:linux下使用privoxy将socks转为http代理


1.重现失败环境。

不知道是什么原因,privoxy无法开机启动。于是,我手动使用systemctl开启。

1
sudo systemctl start privoxy.service

结果失败,提示使用 systemctl status privoxy.service 和 journalctl -xe察看原因。

1
2
sudo systemctl status privoxy.serivce
journalctl -xe

输出信息并没有什么,仅仅一个failed ……status = 1.

2.尝试手动运行privoxy.service中的命令。

1
cat /lib/systemd/system/privoxy.service

输出:

[Unit]
Description=Privacy enhancing HTTP Proxy

[Service]
Environment=PIDFILE=/var/run/privoxy.pid
Environment=OWNER=privoxy
Environment=CONFIGFILE=/etc/privoxy/config
Type=forking
PIDFile=/var/run/privoxy.pid
ExecStart=/usr/sbin/privoxy  --pidfile $PIDFILE --user $OWNER $CONFIGFILE
ExecStopPost=/bin/rm -f $PIDFILE
SuccessExitStatus=15

[Install]
WantedBy=multi-user.target

“ExecStart=”后面的就是会执行的命令,注意将$PIDFILE等变量换掉。

1
sudo /usr/sbin/privoxy  --pidfile/var/run/privoxy.pid --user privoxy /var/run/privoxy.pid

发现并不能启动privoxy,查了下privoxy的帮助,加了下–no-daemon参数,就是不把privoxy作为后台daemon运行。

1
sudo /usr/sbin/privoxy  --no-daemon --pidfile/var/run/privoxy.pid --user privoxy /var/run/privoxy.pid

结果成功了!

3.将正确的命令替换到privoxy.service中。

于是把–no-daemon添加到privoxy.service的“ExeStart=”里面。

1
sudo vim /lib/systemd/system/privoxy.service

将: ExecStart=/usr/sbin/privoxy --pidfile $PIDFILE --user $OWNER $CONFIGFILE 换成: ExecStart=/usr/sbin/privoxy --no-daemon --pidfile $PIDFILE --user $OWNER $CONFIGFILE 重新启动privoxy。

1
2
sudo systemctl daemon-reload
sudo systemctl start privoxy.service

结果一直不退出,但是用netstat -lnpt查看,发现privoxy启动成功了。

1
2
netstat -lnpt | grep 8118
tcp        0      127.0.0.1:8118            0.0.0.0:*               LISTEN

然后我想了一下,可能是systemd启动类型有问题,可是我改了下privoxy.service的启动类别。

1
sudo vim /lib/systemd/system/privoxy.service

将:

[Unit]
Description=Privacy enhancing HTTP Proxy

[Service]
Environment=PIDFILE=/var/run/privoxy.pid
Environment=OWNER=privoxy
Environment=CONFIGFILE=/etc/privoxy/config
Type=forking
PIDFile=/var/run/privoxy.pid
ExecStart=/usr/sbin/privoxy --no-daemon --pidfile $PIDFILE --user $OWNER $CONFIGFILE
ExecStopPost=/bin/rm -f $PIDFILE
SuccessExitStatus=15

改为:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Privacy enhancing HTTP Proxy

[Service]
Environment=PIDFILE=/var/run/privoxy.pid
Environment=OWNER=privoxy
Environment=CONFIGFILE=/etc/privoxy/config
Type=simple
PIDFile=/var/run/privoxy.pid
ExecStart=/usr/sbin/privoxy --no-daemon --pidfile $PIDFILE --user $OWNER $CONFIGFILE
ExecStopPost=/bin/rm -f $PIDFILE
SuccessExitStatus=15

重新启动privoxy,结果成功启动privoxy,privoxy.service也成功退出。

1
2
sudo systemctl daemon-reload
sudo systemctl start privoxy.service

4.最后重启系统,privoxy也成功开机启动。

知识共享许可协议 本文由作者按照 CC BY-SA 4.0 进行授权