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.


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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.