Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Instalace, aktualizace a spouštění => Téma založeno: KoXz666 29 Září 2021, 17:38:04

Název: Automatické uspání disku po startu OS
Přispěvatel: KoXz666 29 Září 2021, 17:38:04
Ahoj, jsem docela začátečník, tak snad mne omluvíte, odpověď je jistě snadná, jen ji nemůžu dogooglit :)

udělal jsem si soubor priklad.sh udělil mu spouštecí práva, vložil do něj co potřebuji, konkrétně:

#!/bin/bash
sleep 30s
sudo hdparm -y /dev/sdb

A nyní už potřebuji jen přijít na to, jak to spouštět automaticky po startu OS? Tu není asi složka "po spuštění" jako na Win? :D Resp, v gnome-tweaks je možnost přidat aplikaci po spuštění. Ale jen aplikaci, ne skript.. Nebo jde udělat z toho skriptu aplikace?

Děkuji
Název: Re:Automatické uspání disku po startu OS
Přispěvatel: juwa2 29 Září 2021, 19:24:54
Je to jednodušší, než si myslíš.... :)
1. Ta aplikace (v nastavení té aplikace) jednoduše nastavíš cestu k tomu skriptu.
2. Budeš se možná divit, ale tzv. složka "po spuštění" samozřejmě existuje:
Kód: [Vybrat]
~/.config/autostart
Nicméně do ní se dávají nikoli (přímo) skripty, ale soubory *.desktop ve kterých je v parametru "Exec=" napsána cesta k tomu skriptu.

Ale má to jeden háček:
Pokud je v příkazu (skriptu) použito "sudo", takový skript se po přihlášení nespustí (kdo by zadal heslo??).
Co s tím?
Ano, i takový skript lze automaticky spustit (aniž by bylo potřebné zadávat heslo), je mu ale třeba udělit výjimku v "sudoers"
http://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt

Kód: [Vybrat]
sudo visudo EDITOR=nano
A přidat tam řádek s cestou ke skriptu.
Zapsat  (ctrl+o)
Uložit (enter)
Ukončit editor (ctrl+x)

Pak už půjde skript spouštět bez nutnosti zadávat root heslo, tím pádem půjde použít v autostartu.... ;)
----------------------------------------------------------------------------------------------------------------------
No, ale v případě toho hdparm se nabízí ještě jedna možnost:
Nastavit mu práva na u+s
Kód: [Vybrat]
sudo chmod u+s "/cesta/k/hdparm"
Pak můžeš to sudo z příkazu vynechat a spouštět to normálně jako běžnou aplikaci, tj. napsat do autostartu příkaz bez "sudo"...

Název: Re:Automatické uspání disku po startu OS
Přispěvatel: KoXz666 29 Září 2021, 22:02:27
Myslím, že jsem z toho větší jelen než předtím :D
Přidal jsem do /etc/sudoers řádky, co by to měli umožnit:

# User privilege specification
skynet  ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
skynet  ALL=(ALL) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
%sudo   ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh

ale furt jsem tázán na heslo i po restartu.  Co dělám špatně?

Druhá varianta taky nezabírá
Když odstraním příkaz sudo ze scriptu a dám:
sudo chmod x+s hdd_standby.sh
tak dostanu: chmod: invalid mode: ‘x+s’

když
sudo chmod +x+s -v hdd_standby.sh
dostanu: mode of 'hdd_standby.sh' changed from 0775 (rwxrwxr-x) to 6775 (rwsrwsr-x)
Je to správně? Nicméně disk takhle neuspím.. (chybovou hlášku to neukáže)
Není to zase tak easy :D ale to dáme, jen ještě malou nápovědu pls :-)

Ještě doplním Pop os
Název: Re:Automatické uspání disku po startu OS
Přispěvatel: West 29 Září 2021, 23:04:12
Uspávanie disku nemá moc zmysel, pretože už to, že sa ten disk roztočí mu uberá na životnosti.
No a keďže ty zrejme ten disk potrebuješ len občas, tak roztáčanie pri každom štarte systému je tak trochu od veci. Riešil som rovnaký problém. Vyriešil som ho USB diskom v boxe, ktorý má vypínač.
Název: Re:Automatické uspání disku po startu OS
Přispěvatel: KoXz666 29 Září 2021, 23:25:12
Jde o to, že to je disk, na kterém jsou věci jen pro windows a navíc je hlučný. Takže když jsem na linuxu, ten disk může spát.. Stejně ho uspávám manuálně hlavně kvůli tomu zvuku, tak bych to rád zautomatizoval..
Rozumím, tím, že ho budu uspávat, bude se roztáčet vlastně 2x tak často.. To beru.. Nejsou tam nějak důležitá data, tak jsem ochotný mu zkrátit životnost
Název: Re:Automatické uspání disku po startu OS
Přispěvatel: West 30 Září 2021, 00:04:20
Vyskúšaj dať ten skript do /bin.

Ja to mám napríklad takto
Kód: [Vybrat]
## Network
Cmnd_Alias NETK = /usr/bin/ntpdate, /sbin/dhclient, /sbin/ip

west<------>ALL=(ALL)<----->NOPASSWD: NETK

Tiež je dôležité aby tam bolo toto:
Defaults   !visiblepw
Název: Re:Automatické uspání disku po startu OS
Přispěvatel: juwa2 30 Září 2021, 05:52:25
Myslím, že jsem z toho větší jelen než předtím :D
Přidal jsem do /etc/sudoers řádky, co by to měli umožnit:

# User privilege specification
skynet  ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
skynet  ALL=(ALL) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh
nebo
%sudo   ALL=(root) NOPASSWD: /home/skynet/.KoXz/hdd_standby.sh

ale furt jsem tázán na heslo i po restartu.  Co dělám špatně?

Druhá varianta taky nezabírá
Když odstraním příkaz sudo ze scriptu a dám:
sudo chmod x+s hdd_standby.sh
tak dostanu: chmod: invalid mode: ‘x+s’

když
sudo chmod +x+s -v hdd_standby.sh
dostanu: mode of 'hdd_standby.sh' changed from 0775 (rwxrwxr-x) to 6775 (rwsrwsr-x)
Je to správně? Nicméně disk takhle neuspím.. (chybovou hlášku to neukáže)
Není to zase tak easy :D ale to dáme, jen ještě malou nápovědu pls :-)

Ještě doplním Pop os

Zadávej cestu nikoli k tomu skriptu, ale k hdparm (= /sbin/hdparm)
Takže ten řádek v sudoers musí být:
Kód: [Vybrat]
skynet  ALL=NOPASSWD: /sbin/hdparm
Příkaz ve skriptu necháš jak je:
Kód: [Vybrat]
#!/bin/bash
sleep 30
sudo hdparm -y /dev/sdb

Případně ta práva:
Kód: [Vybrat]
sudo chmod u+s /sbin/hdparm
Pokud by práva nešla změnit, tak nejprve převezmi vlastnictví:
Kód: [Vybrat]
sudo chown skynet:skynet /sbin/hdparm
sudo chmod u+s /sbin/hdparm

Potom příkaz bude:
Kód: [Vybrat]
#!/bin/bash
sleep 30
hdparm -y /dev/sdb

Takže snad ti to už poběží, na takovéto blbině není důvod si "vylámat zuby".... ;)
Název: Re:Automatické uspání disku po startu OS
Přispěvatel: GdH 30 Září 2021, 14:09:12
...na takovéto blbině není důvod si "vylámat zuby".... ;)

Na "takovéto blbině" hlavně není důvod kompromitovat zabezpečení systému. Dávat právo spouštět potenciálně nebezpečné příkazy čemukoli, co uživatel spustí, není zrovna chytré.
Doporučil bych seznámit se se systemd, může se to hodit. Jako obvykle nabízí pěkný přehled arch wiki:
https://wiki.archlinux.org/title/Hdparm#Putting_a_drive_to_sleep_directly_after_boot (https://wiki.archlinux.org/title/Hdparm#Putting_a_drive_to_sleep_directly_after_boot)

Pár poznámek k těm výše uvedeným radám: