如何在Ubuntu 18.04 Server引导时以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用户身份运行,这是一个非常糟糕的主意。
彼得·科德斯

Answers:


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

它将以root身份在启动时运行。


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用户身份执行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.