解决方案

解决方案

我想让sslocal电脑启动后自动启动。然后我附加一行命令,/etc/profile如下所示/usr/local/bin/sslocal -c /etc/config.json -d start。但是当我重新启动时,出现错误:Permission denied:/var/run/shadowsocks.pid

我知道我附加的脚本需要 root 权限。因为会在 目录下sslocal写入一个名为 的新文件,当我直接在终端中以 root 用户执行该脚本时,一切顺利。我将其附加到 后似乎没有足够的权限。shadowsocks.pid/var/run//etc/profile

那么,怎样才能让脚本开机自动运行呢?有人建议我编辑/etc/rc.local,但它不起作用。我的系统是 Ubuntu 16.04,以下是/etc/rc.local(文件权限为)的内容755

#!/bin/dash -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo /usr/local/bin/sslocal -c /etc/shadowsocks.json -d start

exit 0

答案1

我试图在我的电脑上安装影子套接字。我遇到的问题是如何让shadow-socket的服务在我的电脑启动时自动运行。服务启动命令是sudo /usr/local/bin/sslocal -c /etc/shadowsocks.json -d start(因为该命令会在目录中写入一个新文件/var/run/,从而导致其sudo权限)。

解决方案

让脚本随 PC 启动自动运行的最简单方法是将其写入/etc/profile.因此,就像问题描述的内容一样,我在sudo上面添加了整个命令行exit 0线。

检查是否有效

重新启动计算机后,在终端中输入以下命令sudo systemctl status rc-local.service。如果 sslocal 命令有效,那么您将得到以下输出:

>rc-local.service - /etc/rc.local 兼容性
已加载:已加载(/etc/systemd/system/rc-local.service;已启用;供应商预设:已启用)
活跃:自 2015 年 11 月 27 日周五 03:19:25 CST 起活跃(运行); 2分39秒前
进程:881 ExecStart=/etc/rc.local启动(代码=退出,状态=0/SUCCESS)
CGroup:/system.slice/rc-local.service
─ 887 观看-n 60 su矩阵-c ibam
└─1112 /usr/bin/python /usr/local/bin/sslocal -c /etc/shadowsocks....

从最后一行可以看到,sslocal命令在我的机器上创建了一个pid为1112的进程。这意味着shadow-socks客户端运行顺利。

相关内容