Ubuntu 18.04サーバーで起動時にスクリプトをsudoとして実行するにはどうすればよいですか?[重複]


11

起動時にスクリプトをsudoとして実行するにはどうすればよいですか?

ethtool --offload <net> rx off迷惑なjme udpチェックサムエラーメッセージを無効にするために実行する必要があります。


なぜ起動時にsudoが必要だと思いますか?
Rinzwind

@Rinzwindおそらくethtoolを実行するにはrootが必要なためです。ルートとしてのSystemDユニットが最良のアプローチ
Thomas Ward

1
「as sudo」-「as root(を持つ強力なユーザー$UID=0)」を意味します。sudoは、通常のユーザーがとしてコマンドを実行できるようにするためのツールですroot。「起動時」-システムの起動に関連するすべてが次のように実行されますroot
ワルティネーター

@waltinator:特権を落とすものを除いて; たとえば、システムに特定のユーザーのXサーバー+ユーザーセッションを起動させることができます。しかしethtool、特権を落とした何か(この質問の文言が示唆するような)からsudo を介して実行することは、/etc/rc.local起動時にrootとして実行するためにそれを固執するか、またはより「近代的な」方法と比べて、非常に悪い考えです。
Peter Cordes

回答:


15

systemdサービスを作成できます。

ファイルを作成します/etc/systemd/system/ethtool.service

[Unit]
Description=ethtool script

[Service]
ExecStart=/path/to/yourscript.sh

[Install]
WantedBy=multi-user.target

そして、スクリプト/path/to/yourscript.sh(それを忘れないでくださいchmod +x

#!/bin/bash
ethtool --offload <net> rx off

サービスを有効にする

systemctl enable ethtool

ルートとして起動時に実行されます。


4
@deimos優れた答えは参考になりました場合は、それを受け入れてください:askubuntu.com/tourサーチャーは、期待通りの答えが動作することを知って理解するだろう。
chili555

sudo systemctl start ethtoolサービスをすぐに開始します。systemctl status ehttoolステータス(実行中、有効、ログ)を表示します。さらに詳しくman systemctl
Victor Lamoine

4

コマンドを/etc/rc.localに置くか、存在しない場合はそのファイルを作成します。

 touch /etc/rc.local
 chmod +x /etc/rc.local

これらのアクションはすべてrootとして実行する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.