解決策

解決策

sslocalコンピュータの起動時に自動的に起動するようにしたいと思います。次に、/etc/profile次のようにコマンドラインを追加します/usr/local/bin/sslocal -c /etc/config.json -d start。ただし、再起動すると次のエラーが発生しますPermission denied:/var/run/shadowsocks.pid

私が添付したスクリプトにはルートアクセスが必要であることがわかります。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

私のコンピュータにシャドウソケットを取り付けようとしています。私が持っている問題は、コンピュータの起動時にシャドウソケットサービスが自動的に実行されるようにする方法です。サービス起動コマンドは次のとおりです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)
Cグループ:/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クライアントがスムーズに実行されることを意味します。

関連情報