Utilizzo di crontab
Utilizzo di crontab
Salve a tutti,
su un Pi 400 vorrei lanciare insync headless 1.x al boot con un ritardo di 60 secondi; ho travato una guida che mi dice di fare:
crontab -e
e poi editare
@reboot sleep 60 && /home/pi/insync-portable ./insync-portable start
in realtà non riesco a salvare il file; avrei due domande:
- come si salva?
- dove lo si salva?
Grazie molte a chi vorrà rispondere
peppe
su un Pi 400 vorrei lanciare insync headless 1.x al boot con un ritardo di 60 secondi; ho travato una guida che mi dice di fare:
crontab -e
e poi editare
@reboot sleep 60 && /home/pi/insync-portable ./insync-portable start
in realtà non riesco a salvare il file; avrei due domande:
- come si salva?
- dove lo si salva?
Grazie molte a chi vorrà rispondere
peppe
Re: Utilizzo di crontab
La soluzione "corretta" è usare systemd https://www.shubhamdipt.com/blog/how-to ... -in-linux/
Per avvairlo dopo la rete https://unix.stackexchange.com/question ... -connected
Per il resto le indicazioni sono date sotto l'editor.
Comunque ctrl+o salva e ctrl+x per chiuderlo.
La "roba di cron" è in /var/spool/ (oltre che /etc),a quella in spool non va toccata. Ci pensa da solo con crontab -e che usa un file temporaneo.
Per avvairlo dopo la rete https://unix.stackexchange.com/question ... -connected
Dipende dall'editor di default che hai, ti consiglio nano, usa
select-editor
per selezionarlo.Per il resto le indicazioni sono date sotto l'editor.
Comunque ctrl+o salva e ctrl+x per chiuderlo.
La "roba di cron" è in /var/spool/ (oltre che /etc),a quella in spool non va toccata. Ci pensa da solo con crontab -e che usa un file temporaneo.
~ Marco
Re: Utilizzo di crontab
OK grazie, ci provo e posterò il risultato
Re: Utilizzo di crontab
questo è il file insync-headless.service
e questo l'errore
a m sembra che ho messo il path e il comando; ma evidentemente mi sbaglio; ma dove? boh!
Codice: Seleziona tutto
[Unit]
Description=Lanciare insync headless appena c'è la rete
After=network-online.target
[Service]
User=pi
WorkingDirectory=/home/pi/insync-portable
ExecStart=./insync-portable start
Restart=always
[Install]
WantedBy=multi-user.target
Codice: Seleziona tutto
● insync-headless.service - Lanciare insync headless appena c'è la rete
Loaded: bad-setting (Reason: Unit insync-headless.service has a bad unit file setting.)
Active: inactive (dead)
apr 06 21:28:05 raspberrypi systemd[1]: /etc/systemd/system/insync-headless.service:8: Neither a valid executable name nor an absolute path: ./insync-portable
apr 06 21:28:05 raspberrypi systemd[1]: insync-headless.service: Unit configuration has fatal error, unit will not be started.
Re: Utilizzo di crontab
Penso tu debba indicare un eseguibile o un Path assoluto
Re: Utilizzo di crontab
Ah, pensavo che si spostava nella WorkingDirectory e da lì dava il comando di ExecStart; se non è così per me diventa troppo difficile.
Grazie molte azioga, ma passo la mano, cercherò un altro metodo.
Bye
Grazie molte azioga, ma passo la mano, cercherò un altro metodo.
Bye
Re: Utilizzo di crontab
grazie azioga, ma lì dentro mi ci perdo; pure marcomg mi mette un po' in difficoltà, mia incapacità;
a leggere meglio qui, dove ho preso l'idea:
"[Unit]
Description=<description about this service>
[Service]
User=<user e.g. root>
WorkingDirectory=<directory_of_script e.g. /root>
ExecStart=<script which needs to be executed>
Restart=always
[Install]
WantedBy=multi-user.target"
vedo che WorkingDirectory e ExecStart chiedono due cose che io non ho fatto; si dovrebbe fare uno script e renderlo eseguibile (cosa che non so fare - ancora-) e prima dirgli in quale directoy sta; se è così basta imparare a fare lo script, poi lo metto in una directory giusta e la cosa dovrebbe funzionare, o no?
a leggere meglio qui, dove ho preso l'idea:
"[Unit]
Description=<description about this service>
[Service]
User=<user e.g. root>
WorkingDirectory=<directory_of_script e.g. /root>
ExecStart=<script which needs to be executed>
Restart=always
[Install]
WantedBy=multi-user.target"
vedo che WorkingDirectory e ExecStart chiedono due cose che io non ho fatto; si dovrebbe fare uno script e renderlo eseguibile (cosa che non so fare - ancora-) e prima dirgli in quale directoy sta; se è così basta imparare a fare lo script, poi lo metto in una directory giusta e la cosa dovrebbe funzionare, o no?
Re: Utilizzo di crontab
Io credo che il tuo tentativo iniziale fosse corretto. L'errore dovrebbe essere stato dare il path relativo all'eseguibile.
~ Marco
Re: Utilizzo di crontab
fai qualche prova:
prova ad eseguire lo script direttamente
prova a dare il path assoluto(togli
oppure crea uno script tipo:
gli dai i permessi di esecuzione con chmod, lo metti dove vuoi e
prova ad eseguire lo script direttamente
Codice: Seleziona tutto
WorkingDirectory=/home/pi/insync-portable
ExecStart=insync-portable start
WorkingDirectory
)Codice: Seleziona tutto
ExecStart=/home/pi/insync-portable/insync-portable start
Codice: Seleziona tutto
#!/bin/bash
cd /home/pi/insync-portable
./insync-portable start
Codice: Seleziona tutto
ExecStart=path_dove_hai_messo_lo_script/lo_script
Re: Utilizzo di crontab
questo è insync-start.sh
che dovebbe essere chiamato da
ma non funziona, solo che ora lanciando il comando manuale, che prima funzionava, succede questo
ma perché dice che un file/directory quando è un comando?
e questo se rilancio system manualmente
che poi vedo che l'errore 203 è mancanza di permessi, ma dove? Il file .sh ha il suo!!!
bel casotto!
come torno indietro, che almeno manualmente mi si lanci?
NB: vedo però nel file manager che l'icona insync-headless.service non ha la freccia che hanno tutti gli altri x.service: vuol dire qualcosa?
PS. che poi in /usr/bin non vedo nessun insync
Codice: Seleziona tutto
#!/bin/bash
sleep 60
cd /home/pi/insync-portable
./insync-portable start
Codice: Seleziona tutto
[Unit]
Description=Lanciare insync headless appena c'è la rete
After=network-online.target
[Service]
User=pi
ExecStart=/home/pi/insync-portable/insync-start.sh
Restart=always
[Install]
WantedBy=multi-user.target
Codice: Seleziona tutto
pi@raspberrypi:~ $ cd insync-portable
pi@raspberrypi:~/insync-portable $ ./insync-portable start
bash: ./insync-portable: File o directory non esistente
e questo se rilancio system manualmente
Codice: Seleziona tutto
pi@raspberrypi:~/insync-portable $ sudo systemctl start insync-headless.service
pi@raspberrypi:~/insync-portable $ sudo systemctl status insync-headless.service
● insync-headless.service - Lanciare insync headless appena c'è la rete
Loaded: loaded (/etc/systemd/system/insync-headless.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2022-04-12 21:23:01 CEST; 41s ago
Process: 4557 ExecStart=/home/pi/insync-portable/insync-start.sh (code=exited, status=203/EXEC)
Main PID: 4557 (code=exited, status=203/EXEC)
CPU: 4ms
apr 12 21:23:01 raspberrypi systemd[1]: insync-headless.service: Scheduled restart job, restart counter>
apr 12 21:23:01 raspberrypi systemd[1]: Stopped Lanciare insync headless appena c'è la rete.
apr 12 21:23:01 raspberrypi systemd[1]: insync-headless.service: Start request repeated too quickly.
apr 12 21:23:01 raspberrypi systemd[1]: insync-headless.service: Failed with result 'exit-code'.
apr 12 21:23:01 raspberrypi systemd[1]: Failed to start Lanciare insync headless appena c'è la rete.
lines 1-12/12 (END)
bel casotto!
come torno indietro, che almeno manualmente mi si lanci?
NB: vedo però nel file manager che l'icona insync-headless.service non ha la freccia che hanno tutti gli altri x.service: vuol dire qualcosa?
PS. che poi in /usr/bin non vedo nessun insync
Re: Utilizzo di crontab
ti è stato consigliato di creare/modificare un .service e uno script.
nessuna di queste attività poteva compromettere il lancio manuale.
cosa ti ritorna?
nessuna di queste attività poteva compromettere il lancio manuale.
Codice: Seleziona tutto
$ cd insync-portable
$ ls -al
Re: Utilizzo di crontab
Codice: Seleziona tutto
pi@raspberrypi:~/insync-portable $ ls -al
totale 20
drwxr-xr-x 3 pi pi 4096 13 apr 00.04 .
drwxr-xr-x 15 pi pi 4096 13 apr 16.33 ..
drwxr-xr-x 50 pi pi 4096 13 giu 2017 client
-rwxr--r-- 1 pi pi 74 12 apr 18.53 insync-start.sh
-rwxr--r-- 1 pi pi 65 12 apr 22.07 insync-start.sh.new
Re: Utilizzo di crontab
Perché non c'è più il file insync-portable