il powertop permanente cambia con systemctl


0

Ho uno script .sh, cercando di rendere permanenti le modifiche del powertop.

'auto' > '/sys/bus/pci/devices/0000:00:02.1/power/control';

i comandi in questo .sh-script sono tutti di questo tipo.

Ho un servizio systemd in / etc / systemd / system con questo contenuto:

[Unit]
Description=My Script
After=network.target

[Service]
Type=forking
ExecStart=/home/my_username/.autostart_sudo.sh

[Install]
WantedBy=multi-user.target

Lo script ".autostart_sudo.sh" viene chiamato correttamente dopo l'avvio, (ad esempio "bluetooth off" -comando in questo file viene chiamato perfeclty) ma i comandi echo- & gt; non vengono chiamati correttamente.

Ho notato che digitando

  sudo 'auto' > '/sys/bus/pci/devices/0000:00:02.1/power/control';

in un terminale dà un errore di restrizione, ma

  sudo su
 'auto' > '/sys/bus/pci/devices/0000:00:02.1/power/control';

lavori.

come devo cambiare il mio systemd + bash-script per far funzionare i powertop-change all'avvio?

Grazie in anticipo!

Modificare:

Va bene, provo a descrivere di nuovo il flusso: Ho ricevuto il servizio systemd pubblicato in cima a questo post. Questo servizio chiama ".autostart_sudo.sh" nel mio / home / utente /.

Ci sono molti comandi in questo .autostart_sudo.sh con questo aspetto:

echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:04:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:03:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1a.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:03.3/power/control';
(...)
thinkfan start

Il "thinkfan start" ha bisogno anche dei privilegi di root per iniziare correttamente, questo funziona, ma i "echo" -commands non lo fanno.

Ho anche provato

bash -c 'echo auto > /sys/bus/pci/devices/0000:00:1d.0/power/control;'
bash -c 'echo auto > /sys/bus/pci/devices/0000:00:1a.7/power/control;'
bash -c 'echo auto > /sys/bus/pci/devices/0000:00:1a.2/power/control;'
bash -c 'echo auto > /sys/bus/pci/devices/0000:00:02.0/power/control;'
bash -c 'echo auto > /sys/bus/pci/devices/0000:00:02.1/power/control;'  

non funziona neanche: /

Le cose sudo-test che ho menzionato sopra erano solo dei test in un terminale .

qualche consiglio?


1
Lo hai davvero? 'auto' > '/sys/bus/pci/devices/0000:00:02.1/power/control' nel tuo script o echo 'auto' > '/sys/bus/pci/devices/0000:00:02.1/power/control'? In ogni caso, se lo script è chiamato da systemd, sudo non dovrebbe essere necessario. Funziona se solo tu echo i comandi nei file, con no sudo?
terdon

no, il test sudo era fuori dallo script in un terminale. ho il servizio systemd che chiama lo script, dove sono elencati i comandi "echo ..." - (senza sudo).
breytex

Non sono ancora sicuro di capire, potresti darci l'intero quadro? Quale test sudo, pensavo che systemd lo stesse eseguendo all'avvio? Potresti forse postare la sceneggiatura? O almeno un esempio minimale che riproduce il problema?
terdon

ho provato a rendere le cose più chiare nel mio post-editing :-)
breytex

fa echo 'auto' | sudo tee 'file' lavoro?
ignis

Risposte:


0

Sei sicuro che X-bit è impostato su /home/my_username/.autostart_sudo.sh Tieni presente che il proprietario uid / gid di questo script deve essere root per impedire l'inserimento di codice shell da parte del malware. E

sudo echo 'auto' > '/sys/bus/pci/devices/0000:00:02.1/power/control';

non funzionerà perché "& gt;" eseguito non da root. Provare

sudo bash -c 'echo auto > /sys/bus/pci/devices/0000:00:02.1/power/control';

ho provato a rendere le cose più chiare nel mio post-editing :-)
breytex

0

Sì, mio ​​male. ho chiamato tlp start dopo le modifiche di Powertop. Non so che il tlp farebbe pasticciare le impostazioni. Quindi, se hai lo stesso problema: chiamata tlp start


Complimenti per averlo capito. Potresti dare un po 'più di dettaglio per favore? Quando stavi chiamando tlp start prima e quando lo chiami ora?
terdon

0

Così triste, finalmente devo intervenire e rispondere a questa domanda ...

In precedenza non ero in grado di rispondere perché non avevo la reputazione di rispondere a domande, commenti, voti positivi. Quindi, se vuoi ricevere più risposte, allora rispondi a questa risposta

Devi fare 2 cose:

1) Automatizzare la password per ogni comando che richiede privilegi sudo.

echo "PASSWORD" | sudo -S COMMAND

2) Assegna a tutti i permessi di modificare il contenuto di ciascun file di configurazione

chmod 666 File_Path

ecco il codice che funziona per me:

Cambia "PASSWORD" con la password sudo dell'account corrente

#For File Permission Change

echo "PASSWORD" | sudo -S chmod 666 '/sys/class/scsi_host/host0/link_power_management_policy'
echo "PASSWORD" | sudo -S chmod 666 '/sys/class/scsi_host/host1/link_power_management_policy'
echo "PASSWORD" | sudo -S chmod 666 '/sys/module/snd_hda_intel/parameters/power_save'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/i2c/devices/i2c-5/device/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/usb/devices/3-1.6/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1b.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:16.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1f.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1c.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1f.2/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1c.2/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:14.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1d.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:06:00.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:03.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:00.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1c.3/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:07:00.0/power/control'
echo "PASSWORD" | sudo -S chmod 666 '/sys/bus/pci/devices/0000:00:1c.4/power/control'

#For Actual Modification

echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy'
echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy'
echo '1' > '/sys/module/snd_hda_intel/parameters/power_save'
echo 'auto' > '/sys/bus/i2c/devices/i2c-5/device/power/control'
echo 'auto' > '/sys/bus/usb/devices/3-1.6/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1b.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.2/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:06:00.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:03.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.3/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:07:00.0/power/control'
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.4/power

Nota: potrebbe essere necessario modificare l'intero comando come da sistema :)


Finché non sei vietato o sospeso, hai sempre il permesso di rispondere a qualsiasi domanda (che non sia bloccata o protetta).
G-Man

Ad ogni modo, il mio nuovo codice ha funzionato per te?
Pankaj Kumar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.