Puncte:1

crontab nu va rula scriptul meu

drapel in

Am încercat să execut un script la pornire, dar nu am reușit. crontab

@reboot /bin/sleep 8s && /bin/bash /home/user/reconnect.sh > /home/user/reconnect.log 2>&1

Scriptul rulează bine dacă îl execut manual.

#!/bin/bash

# Dacă a pornit ca root, atunci reporniți ca utilizator „utilizator”:
if [ "$(id -u)" -eq 0 ]; atunci
    exec sudo -H -u utilizator $0 „$@”
    echo "Acest lucru nu este niciodată atins.";
fi
echo "Acesta rulează ca utilizator $(id -un)";

în timp ce [ „adevărat”]
do
        VPNCON=$(/bin/nmcli con | /bin/grep PureVPN_PPTP | /bin/cut -f18 -d " ")
        dacă [[ $VPNCON != ens3 ]]; atunci
                /bin/echo „Deconectat, încercând să mă reconectam...”
                (/bin/sleep 1s && /bin/nmcli con up uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4)
        elif IP=$(ifconfig ppp0 | awk '/inet/{print $2; exit}')
                (/bin/sleep 5s)
                [ "$IP" != "xxx.xxxx.xxx.xxx" ]; atunci
                /bin/echo „IP greșit: $IP”
                (/bin/sleep 1s && /bin/nmcli cu down uuid 1dfcb9f6-1b90-3d92-9f8b-106dc35da0f4 && /bin/sleep 2s && /bin/nmcli con up uuid 1dfcb9f6-1b90f6-3dc35da0f4)
        altfel
                /bin/echo "Deja conectat!"
        fi
        /bin/sleep 30
Terminat

De la postarea inițială, am lucrat puțin la scenariu. Funcționează bine executat manual.

Executat de crone ca utilizator, primesc următoarea eroare:

Acesta rulează ca utilizator utilizator
Deconectat, încercând să mă reconectam...
Eroare: Activarea conexiunii a eșuat: Nu este autorizat să controleze rețeaua.

Cumva, utilizatorul cu cron nu are aceleași drepturi ca și pentru el însuși. Problema este că atunci când este executat ca root, eșuează și el. Acreditările pentru vpn sunt stocate în breloul de chei al utilizatorilor, astfel încât root nu poate stabili conexiunea:-/

drapel vn
Răspunde asta la întrebarea ta? [Nu pot crea un job crontab pentru programul meu scrapy](https://askubuntu.com/questions/1288111/cannot-create-a-crontab-job-for-my-scrapy-program)
drapel hr
Vă sugerez să începeți prin a captura rezultatul + erorile din scriptul dvs. într-un jurnal de ex. `@reboot /bin/bash /home/user/reconnect.sh > /home/user/reconnect.log 2>&1`. Examinarea jurnalului poate indica care este problema.
user535733 avatar
drapel cn
Când înveți cum să rulezi joburi @reboot, merită adesea timpul pentru a afla cum funcționează țintele systemd la pornire. Utilizarea țintelor vă oferă mai mult control decât cronjob-urile.
Soren A avatar
drapel mx
Puteți verifica /var/log/syslog dacă cron run este scriptul.
Sturmkater avatar
drapel in
@PabloBianchi, din păcate nu. Dar e bine să știi cum să adaugi ușor toate căile!
Sturmkater avatar
drapel in
@steeldriver Frumos!!! Înregistrarea este atât de utilă pentru depanare. Mulțumiri
drapel hr
@Sturmkater sună ca ceva ce ar trebui să faci prin aplicațiile de pornire ale utilizatorului, mai degrabă decât prin cron. Vedeți, de exemplu, [Cum pornesc aplicațiile automat la conectare?](https://askubuntu.com/questions/48321/how-do-i-start-applications-automatically-on-login)
Puncte:1
drapel it

Locuri de muncă rulează cron, sau systemd Scripturile de pornire nu sunt rulate în același mediu de rulare pe care îl aveți pe desktop. systemd scripturile de pornire sunt rulate ca rădăcină. Nici unul dintre voi CALE modificările sau alte setări ale variabilelor de mediu sunt propagate automat către dvs cron loc de munca. De exemplu, nu există $DISPLAY, deci programele GUI au nevoie de un tratament special (citiți man xhost).

Se pot seta variabile de mediu pentru toate cron locuri de muncă în crontab fişier Citit om 5 crontab.

Uită-te la rezultatele echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias în fiecare dintre mediile dumneavoastră.

De când comanda parte a crontab linia este, implicit, interpretată de /bin/sh, care are o sintaxă mai simplă decât /bin/bash, recomand să aveți comanda fii un apel către a bash script (executabil, montat, începe cu #!/bin/bash) care configurează mediul, apoi apelează programul dorit.

Puncte:0
drapel in

Mulțumesc, Steeldrive:-) Bănuiesc că, odată ce începi cu interfața grafică, ești obosit să o rămâi. Sugestia ta funcționează ca un farmec.

@Sturmkater sună ca ceva ce ar trebui să faci prin intermediul tău aplicațiile de pornire ale utilizatorului, mai degrabă decât prin cron. Vezi de exemplu Cum pornesc aplicațiile automat la autentificare? â șofer de oțel

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.