Utilizzo di crontab

Installazione, configurazione e utilizzo di Debian su Raspberry pi
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Utilizzo di crontab

Messaggio da peppe_rm »

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
Avatar utente
marcomg
Administrator
Administrator
Messaggi: 8061
Iscritto il: 22/08/2011, 18:54

Re: Utilizzo di crontab

Messaggio da marcomg »

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
peppe_rm ha scritto: 05/04/2022, 17:19 in realtà non riesco a salvare il file; avrei due domande:
- come si salva?
- dove lo si salva?
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
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Re: Utilizzo di crontab

Messaggio da peppe_rm »

OK grazie, ci provo e posterò il risultato
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Re: Utilizzo di crontab

Messaggio da peppe_rm »

questo è il file insync-headless.service

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
e questo l'errore

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.

a m sembra che ho messo il path e il comando; ma evidentemente mi sbaglio; ma dove? boh!
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1331
Iscritto il: 03/09/2018, 7:53

Re: Utilizzo di crontab

Messaggio da azioga »

Penso tu debba indicare un eseguibile o un Path assoluto
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Re: Utilizzo di crontab

Messaggio da peppe_rm »

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
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1331
Iscritto il: 03/09/2018, 7:53

Re: Utilizzo di crontab

Messaggio da azioga »

Avatar utente
marcomg
Administrator
Administrator
Messaggi: 8061
Iscritto il: 22/08/2011, 18:54

Re: Utilizzo di crontab

Messaggio da marcomg »

peppe_rm ha scritto: 07/04/2022, 21:39 se non è così per me diventa troppo difficile
Dare un path assoluto invece che relativo?
~ Marco
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Re: Utilizzo di crontab

Messaggio da peppe_rm »

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?
Avatar utente
marcomg
Administrator
Administrator
Messaggi: 8061
Iscritto il: 22/08/2011, 18:54

Re: Utilizzo di crontab

Messaggio da marcomg »

peppe_rm ha scritto: 08/04/2022, 21:57 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?
Io credo che il tuo tentativo iniziale fosse corretto. L'errore dovrebbe essere stato dare il path relativo all'eseguibile.
~ Marco
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1331
Iscritto il: 03/09/2018, 7:53

Re: Utilizzo di crontab

Messaggio da azioga »

fai qualche prova:

prova ad eseguire lo script direttamente

Codice: Seleziona tutto

WorkingDirectory=/home/pi/insync-portable
ExecStart=insync-portable start
prova a dare il path assoluto(togli WorkingDirectory)

Codice: Seleziona tutto

ExecStart=/home/pi/insync-portable/insync-portable start
oppure crea uno script tipo:

Codice: Seleziona tutto

#!/bin/bash
cd /home/pi/insync-portable
./insync-portable start
gli dai i permessi di esecuzione con chmod, lo metti dove vuoi e

Codice: Seleziona tutto

ExecStart=path_dove_hai_messo_lo_script/lo_script
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Re: Utilizzo di crontab

Messaggio da peppe_rm »

questo è insync-start.sh

Codice: Seleziona tutto

#!/bin/bash
sleep 60
cd  /home/pi/insync-portable
./insync-portable start
che dovebbe essere chiamato da

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
ma non funziona, solo che ora lanciando il comando manuale, che prima funzionava, succede questo

Codice: Seleziona tutto

pi@raspberrypi:~ $ cd insync-portable
pi@raspberrypi:~/insync-portable $ ./insync-portable start
bash: ./insync-portable: File o directory non esistente
ma perché dice che un file/directory quando è un comando?

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)
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
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1331
Iscritto il: 03/09/2018, 7:53

Re: Utilizzo di crontab

Messaggio da azioga »

ti è stato consigliato di creare/modificare un .service e uno script.
nessuna di queste attività poteva compromettere il lancio manuale.

Codice: Seleziona tutto

$ cd insync-portable
$ ls -al
cosa ti ritorna?
peppe_rm
Full Member
Full Member
Messaggi: 102
Iscritto il: 01/10/2007, 17:45

Re: Utilizzo di crontab

Messaggio da peppe_rm »

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
il file .service è insync-start.sh, e non capisco perché si è compromesso il lancio manuale
Avatar utente
azioga
Hero Member
Hero Member
Messaggi: 1331
Iscritto il: 03/09/2018, 7:53

Re: Utilizzo di crontab

Messaggio da azioga »

Perché non c'è più il file insync-portable
Rispondi