« MoMy »
Utente Èlite
- Messaggi
- 1,584
- Reazioni
- 851
- Punteggio
- 107
Per essere chiari, se crei un timer con cron o systemd/timer, le due righe sotto non servono a nulla.
sleep 7200
exec $0
Segui il video qui sotto per vedere come installare il nostro sito come web app sulla tua schermata principale.
Nota: Questa funzionalità potrebbe non essere disponibile in alcuni browser.
Pubblicità
sleep 7200
exec $0
@e_ale92 ma se crei un'applicazione:e sfondi.sh:Codice:#!/usr/bin/env xdg-open [Desktop Entry] Version=1.6 Name=WallpaperRotation Comment=Rotazione sfondi Exec=/home/user/sfondi.sh Icon=/path/to/icon Terminal=false Type=Application Categories=Utility;Application; Name[it_IT]=WallpaperRotation
mettendo l'applicazione in /home/user/.local/share/applications/ e impostando l'applicazione in gnome-tweak-tool-->applicazioni d'avvio.Codice:#!/bin/bash while [[ 1 -eq 1 ]]; do for i in $(echo /home/user/Immagini/*.jpg); do echo $i gsettings set org.gnome.desktop.background picture-uri file:///${i} sleep 5; done done
per @« MoMy » :inchino:
Ai service non serve +x (i miei service e timer han tutti questi permessi -rw-r--r--), poi se crei un timer, che sia con cron o systemd, l' ultima parte dello script non serve a nulla perché il timer dovrebbe adempiere il compito di avviare lo script in base al delay impostato/creato. Infine devi tener presente che lo script deve partire non prima di aver avviato il server X o wayland che sia, altrimenti cosa avvia?
Nel journalctl -b dovresti trovar traccia dell' errore.
In pratica lo farei così:
Timer:
Codice:[Unit] Description=auto wallpaper change [Timer] OnBootSec=50sec # OnUnitActiveSec=10sec OnUnitActiveSec=7200sec Unit=wallpaper.service [Install] WantedBy=multi-user.target
Service:
Potresti fare anche una prova con un paio di echo, se noti sia nel timer e service ci son due righe bindate. Journalctl -f è come dmesg -w.Codice:[Unit] Description=auto wallpaper change [Service] Type=oneshot ExecStart=/home/bcclsn/.wallpaper_changer.sh # /usr/bin/echo Il service funziona [Install] WantedBy=multi-user.target
Lanci systemctl start blabla.timer e poi systemctl -f, l' echo pubblica nel journal.
Avvii il .timer e non .service, vero?
[Unit]
Description=prova
[Service]
Type=oneshot
ExecStart=/home/momy/.scripts/ciao
[Install]
WantedBy=multi-user.target
[Unit]
Description=prova Timer
[Timer]
OnBootSec=50sec
OnUnitActiveSec=10sec
Unit=prova.service
[Install]
WantedBy=multi-user.target
#!/bin/bash
wallpaperdir='/home/momy/.sfondi'
files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`
## gsettings set org.gnome.desktop.background picture-uri $randompic
echo $wallpaperdir
echo $files
echo $randompic
exit 0
grazie mille!Boh!
Ho fatto una prova al volo e funge, almeno gli echo funzionano.
prova.service
Codice:[Unit] Description=prova [Service] Type=oneshot ExecStart=/home/momy/.scripts/ciao [Install] WantedBy=multi-user.target
prova.timer
Codice:[Unit] Description=prova Timer [Timer] OnBootSec=50sec OnUnitActiveSec=10sec Unit=prova.service [Install] WantedBy=multi-user.target
Lo scriptino
Codice:#!/bin/bash wallpaperdir='/home/momy/.sfondi' files=($wallpaperdir/*) randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"` ## gsettings set org.gnome.desktop.background picture-uri $randompic echo $wallpaperdir echo $files echo $randompic exit 0
A proposito, metti che lo legga lo stesso, ma se togli l' ultimo slash da wallpaperdir='/home/bcclsn/Immagini/wallpaper/', eviti che il nome file acquisito sia /home/bcclsn/Immagini/wallpaper//nome-wall (wallpaper//nome-wall).
non è meglio mettere il servizio in /home/user/.config/systemd/ e usare systemctl --user?Boh!
Ho fatto una prova al volo e funge, almeno gli echo funzionano.
prova.service
già provato cone funziona perfettamente. naturalmente ho messo il .service e il .timer in /home/username/.config/sysyemd/user/.Codice:Environment=DISPLAY=:0
@e_ale92 hai provato a vedere lo stato del servizio? cioè il servizio è abilitato ma stoppato?
sudo mount /path && sudo snapper /option/path/etc. && sudo umount /path
Tu usi il gnomo se non sbaglio e hai provato il cambio del wall usando il .timer? A parte esiste l' estensione per Gnome, si chiama Desk-changer però non ho approfondito più di tanto.
Per come la vedo io poi... per cosette del genere preferisco lo scriptino fatto in casa. :P
[Unit]
Description=prova
[Service]
Type=oneshot
Environment=DISPLAY=:0
ExecStart=/usr/bin/bash /home/momy/.scripts/ciao
################## I Commenti sono da Cancellare
##[Install]
##WantedBy=timers.target
##################
[Unit]
Description=prova Timer
[Timer]
OnBootSec=50sec
OnUnitActiveSec=10sec
Unit=prova.service
[Install]
WantedBy=timers.target
#!/bin/bash
wallpaperdir='/home/momy/.sfondi'
files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`
##gsettings set org.gnome.desktop.background picture-uri $randompic
feh --bg-fill $randompic
$ systemctl --user enable prova.timer
$ systemctl --user start prova.timer
Insomma stasera coi nipotuzzi mi son visto Lego Batman, dal morir dal ridere.
Per il resto e mia curiosità...
Non avendola ho creato la cartella ~/.config/systemd/user e aggiustato il .timer e .service così:
.service
Codice:[Unit] Description=prova [Service] Type=oneshot Environment=DISPLAY=:0 ExecStart=/usr/bin/bash /home/momy/.scripts/ciao [Install] WantedBy=timers.target
.service
Codice:[Unit] Description=prova Timer [Timer] OnBootSec=50sec OnUnitActiveSec=10sec Unit=prova.service [Install] WantedBy=timers.target
Con Openbox uso feh per lo sfondo desk, quindi:
Codice:#!/bin/bash wallpaperdir='/home/momy/.sfondi' files=($wallpaperdir/*) randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"` ##gsettings set org.gnome.desktop.background picture-uri $randompic feh --bg-fill $randompic
Ogni 60 (50 + 10) secondi mi cambia lo sfondo. Probabilmente si potrà usare qualche altra opzione... buh!Codice:$ systemctl --user enable prova.timer $ systemctl --user start prova.timer
L' errore, da pollo proprio, è che il service non esegue uno script se non gli dici con cosa avviarlo (ExecStart=/usr/bin/bash /home/momy/.scripts/ciao).
Per il discorso Snapper ti dico come la penso, poi... \0/
Btrfs mette a disposizione tutti i comandi per gestire i subvol, gli snap, i send etcetc quindi, a cosa mi serve uno script via cli che mi crea più problemi che soluzioni.
In qualsiasi caso metterei tutto dentro uno scriptino invece di usare un alias, salverei la partizione di boot (o esp se uefi) con rsync (o DD) perché in caso di comando distruttore lo snap non te la salva e sistemerei il file /etc/fstab eliminando l' opzione subvolid= perché in caso rollback, il file /etc/fstab cerca un subvolid= che non è dello snap in carico.
Della serie, non è tutto così bello, pinto e automatico.
Bye^^
- Creo la cartella in /mnt/btrfs per montare @;
# mkdir /mnt/btrfs
- Monto la radice / dando per scontato che il disco/partizione sia /dev/sda1;
# mount -t btrfs -o subvol=/ /dev/sda1 /mnt/btrfs/
- Creo un subvol ove andrò a depositare gli snapshots e lo chiamo snap;
# btrfs subvolume create /mnt/btrfs/snap
- Snappo la radice / che sappiamo essere nel subvol @;
# btrfs subvolume snapshot -r /mnt/btrfs/@ /mnt/btrfs/snap
- Smonto /mnt/btrfs che sappiamo essere il punto di mount del subvol=/.
# umount /mnt/btrfs
allora col .timer abilitato e avviato (tramite $ systemctl --user) lo script (tuo) funziona perfettamente, l'unico inconveniente è che anche istruendo con '# loginctl enable-linger $USER' il servizio/timer è caricato al successivo reboot ma non avviato: c'è bisogno di digitare 'systemctl --user start $nometimer.timer'; ho provato con WantedBy=basic.target e default-target. hai suggerimenti?Tu usi il gnomo se non sbaglio e hai provato il cambio del wall usando il .timer? A parte esiste l' estensione per Gnome, si chiama Desk-changer però non ho approfondito più di tanto.
Per come la vedo io poi... per cosette del genere preferisco lo scriptino fatto in casa. :P
OnCalendar=°:__/__
Persistent=true
allora col .timer abilitato e avviato (tramite $ systemctl --user) lo script (tuo) funziona perfettamente, l'unico inconveniente è che anche istruendo con '# loginctl enable-linger $USER' il servizio/timer è caricato al successivo reboot ma non avviato: c'è bisogno di digitare 'systemctl --user start $nometimer.timer'; ho provato con WantedBy=basic.target e default-target. hai suggerimenti?
@e_ale92 prova nel .timer le opzionispecificando in OnCalendar l'intervallo relativo a una settimana; il persistent true fa in modo che se salti il serviazio previsto al successivo avvio della macchina ti fa in automatico l'esecuzione del comando.Codice:OnCalendar=°:__/__ Persistent=true