Bagaimana cara menjalankan skrip sebagai sudo saat boot di Ubuntu 18.04 Server? [duplikat]

11

Bagaimana cara menjalankan skrip sebagai sudo saat boot?

Saya perlu menjalankan ethtool --offload <net> rx offuntuk menonaktifkan pesan kesalahan jme udp checksum yang mengganggu.

Amie Nel
sumber
mengapa Anda yakin Anda perlu sudo saat boot?
Rinzwind
@Rinzwind mungkin karena ethtool membutuhkan root untuk dijalankan. Unit SystemD sebagai root adalah pendekatan terbaik
Thomas Ward
1
"as sudo" - maksudmu "as root(pengguna mahabesar dengan $UID=0)". sudoadalah alat untuk memungkinkan pengguna biasa menjalankan perintah sebagai root. "at boot" - semua yang terlibat dengan startup sistem berjalan sebagairoot
waltinator
@waltinator: kecuali hal-hal yang menghilangkan hak istimewa; mis. Anda dapat membuat sistem Anda memulai X server + sesi pengguna untuk pengguna tertentu. Tetapi menjalankan ethtoolmelalui sudo dari sesuatu yang telah menghilangkan hak istimewa (seperti kata-kata dari pertanyaan ini menyarankan) akan menjadi ide yang sangat buruk vs tetap menggunakannya /etc/rc.localatau cara "modern" lainnya untuk menjalankan sesuatu sebagai root selama boot.
Peter Cordes

Jawaban:

15

Anda dapat membuat layanan systemd.

Buat file /etc/systemd/system/ethtool.service:

[Unit]
Description=ethtool script

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

[Install]
WantedBy=multi-user.target

Dan skrip /path/to/yourscript.sh(jangan lupa untuk chmod +xitu)

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

Aktifkan layanan Anda

systemctl enable ethtool

Ini akan berjalan saat boot sebagai root.

deimos
sumber
4
Jika @deimos jawaban yang sangat baik sangat membantu, terimalah: askubuntu.com/tour Para pencari akan menghargai mengetahui bahwa jawabannya bekerja seperti yang diharapkan.
chili555
sudo systemctl start ethtooluntuk memulai layanan segera. systemctl status ehttooluntuk menampilkan status (berjalan, diaktifkan, dan masuk). Pelajari lebih lanjut denganman systemctl
Victor Lamoine
4

Masukkan perintah Anda di /etc/rc.local atau buat file itu jika tidak ada:

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

Semua tindakan ini harus dilakukan sebagai root.

Willem Vermin
sumber