Samodejen start računalnika vsak delovni dan

Računalnik bi rad nastavil, da se vsak delovni dan samodejno zažene (če nisem zraven) ob določenem času in odpre spletno stran.
Našel sem delno rešitev.
sudo rtcwake -m no -l -t $(date +%s -d 'tomorrow 06:30')

Ukaz pripravi računalnik na zagon ob določenem času. Vendar jaz ne bi rad tega vsak dan vpisoval.
Za odpiranje spletne strani sem nastavil Alarm-Clock, ki dela dovolj dobro. Bi pa ukinil Alarm-Clock, če je možna nastavitev v enem koraku!
«1

Komentarji

  • Ni ti potrebno vsak dan.. naredi cronjob script oziroma dodaj vnos v cron - skript, ki ti recimo preveri kateri je jutri dan in ti nato nastavi rtcwake, če je delovni dan.
    Če pa je petek pa nastaviš da se zažene šele v ponedeljek.
  • Vsaka spodobna matična plošča omogoča nastavljanje dogodka za zbujanje v BIOS-u (UEFI).
  • dusang Član
    uredil/-a 18. April, 2015
    CrazyLemon je dejal/-a:
    Ni ti potrebno vsak dan.. naredi cronjob script oziroma dodaj vnos v cron - skript, ki ti recimo preveri kateri je jutri dan in ti nato nastavi rtcwake, če je delovni dan.
    Če pa je petek pa nastaviš da se zažene šele v ponedeljek.
    Torej bil bi vesel enega primera (predvsem če je petek).
    Sem pravkar poskusil zadevo urediti s crontab-om. Pa imam težave. Instaliral sem gnome-schedule in poskusil tam.
    Natavil sem opravilo (kot root):
    rtcwake -m no -l -t $(date +%s -d 'tomorrow 06:30')

    vendar ko ga hočem shraniti mi javi napako. Parameter %s se ne sklada z opravilom cron. Piše naj namesto tega uporabim redirekcijo |. Tu pa se mi zalomi. Parameter %s so sekunde, ki jih je treba dati rtcwake programu.
    Vsaka spodobna matična plošča omogoča nastavljanje dogodka za zbujanje v BIOS-u (UEFI).
    Moj mlinček nima UEFI biosa. Malo starejši notesnik.
  • CrazyLemon Skrbnik
    uredil/-a 18. April, 2015
    Torej.. ne poznam gnome-schedule in ti pri tem ne znam pomagat.

    Sam bi lepo spisal en bash skript ki naredi nekaj v smislu

    // preverimo ali smo v delovnem dnevu (1 - Mon, 5 - Fri)
    if date +%u -lt 6
    // preverimo če je petek (5)
    if date +%u -eq 5
    // spimo do ponedeljka
    rtcwake -m no -l -t $(date +%s -d 'monday 06:30')
    // v drugem primeru se zbudimo spet jutri
    rtcwake -m no -l -t $(date +%s -d 'tomorrow 06:30')

    To je tako površno napisano (bolj psevdo koda recimo temu) in ni po bash pravilih.

    Nato bi shranil ta skript in bi dal v cron da se zažene daily ob recimo 10.00, ko je računalnik prižgan.
  • dusang Član
    uredil/-a 19. April, 2015
    CrazyLemon je dejal/-a:
    Sam bi lepo spisal en bash skript ki naredi nekaj v smislu
    // preverimo ali smo v delovnem dnevu (1 - Mon, 5 - Fri)
    rtcwake -m no -l -t $(date +%s -d 'monday 06:30')


    Problem je v zgoraj omenjenem stavku, ki ga izvaja cron. Pri zagonu javi napako:
    'Odvečen parameter -d'

    Sedaj imam takšen skript.
    #!/bin/sh
    danes=$(date +%u)
    echo $danes
    if [ $danes = 5 ]
    then
    # zagon v ponedeljek ob 09:20
    rtcwake -m no -l -s 258300
    else
    # zagon jutri ob 09:20
    rtcwake -m no -l -s 85500
    fi


    Problem je v stavku: rtcwake -m no -l -t $(date +%s -d 'monday 09:20')
    Pri izvedbi iz crona javi odvečen parameter -d. Moral bi uporabiti nekakšen redirekt.
    Tudi če poskusim dati čas v spremenljivko javi isto napako.
    Ponedeljek=$(date +%s -d 'monday 09:20')
    Echo $ponedeljek dela v redu, medtem ko :
    "rtcwake -m no -l -t $Ponedeljek" javi napako.
    Če zadevo poganjam v terminalu pa ne dela težav. Torej nek problem v cronu.

    Če v cronu testiram ta ukaz:
    rtcwake -m no -l -t $(date +%s -d 'monday 09:20')
    mi javi opozorilo:
    Your command contains one or more of the character %, this is special
    for cron and cannot be used with Gnome-schedule because of the format it
    uses to store extra information on the crontab line. Please use the | redirector
    character to achieve the same functionality. Refer to the crontab manual for
    more information about the % character. If you don not want to use it for
    redirection it must be properly escaped with the \ letter

    Poskusil sem dodati \ pred %s, vendar ni zaleglo! :(
  • CrazyLemon Skrbnik
    uredil/-a 19. April, 2015
    Napaka je da izvajaš te ukaze v cronu. Tega cronjob ne bo izvajal. Cronjob bo samo naredil samo tisto kar mu podaš. V tem primeru mu boš podal uro/minuto/dan in mu povedal da bash izvede skript. Drugo pa bo bash naredil.

    P.s. Za primerjavo števil uporabi -eq.
  • CrazyLemon je dejal/-a:
    Napaka je da izvajaš te ukaze v cronu. Tega cronjob ne bo izvajal. Cronjob bo samo naredil samo tisto kar mu podaš. V tem primeru mu boš podal uro/minuto/dan in mu povedal da bash izvede skript. Drugo pa bo bash naredil.

    P.s. Za primerjavo števil uporabi -eq.
    Tisti stavek je samo testni. Cronu sem navedel pot do bash scripte, vendar mi pri testu tudi javi napako. V cronu imaš možnost testirati ukaz in v terminalskem oknu vidiš ali je prišlo do napake. Ko poganjam scripto v terminalu deluje kot mora, cron pa je ne požene kot treba.
    Na žalost mi cron danes ni izvedel naročenega. Ne samo, da se ni pognal notesnik tudi ni odprl spletne strani kot sem testno naročil. :(

    Tukaj je testna skripta, ki pa je cron ne izvede kot pričakovano:

    #!/bin/bash
    clear
    danes=$(date +%u)
    poned=$(date -d 'monday 09:20')
    petek=$(date +\%s -d 'monday 09:20')
    jutri=$(date +\%s -d 'tomorrow 09:20')
    echo $danes
    echo $poned
    echo $petek
    echo $jutri

    if $danes -eq 7
    then
    echo zagon v ponedeljek ob 09:20
    # rtcwake -m no -l -t $petek
    # rtcwake -m no -l -s 258300
    else
    echo zagon jutri ob 09:20
    # rtcwake -m no -l -t $jutri
    # rtcwake -m no -l -s 85500
    fi


    In ekran pripreiskusu:
    date: odvečni operand »-d«
    Poskusite »date --help« za izčrpnejša navodila
    date: odvečni operand »-d«
    Poskusite »date --help« za izčrpnejša navodila
    1
    pon apr 20 09:20:00 CEST 2015

    /home/dusan/Temp/bujenje.sh: vrstica 12: 1: ukaza ni mogoče najti
    zagon jutri ob 09:20
    Press ENTER to continue and close this window.

    Izpisal je samo prvi dve spremenljivki!
    Kot vidiš mu '-eq' tudi ni všeč!
  • CrazyLemon Skrbnik
    uredil/-a 20. April, 2015
    crazylemon@pingo:~$ cat test.sh 
    #!/bin/bash

    danes=$(date +%u)
    poned=$(date -d 'monday 09:20')
    petek=$(date +%s -d 'monday 09:20')
    jutri=$(date +%s -d 'tomorrow 09:20')
    testfile=\"/home/crazylemon/test.txt\"
    echo $(date) $danes >> \"$testfile\"
    echo $poned >> \"$testfile\"
    echo $petek >> \"$testfile\"
    echo $jutri >> \"$testfile\"
    crazylemon@pingo:~$ cat test.txt
    pon apr 20 10:27:01 CEST 2015 1
    pon apr 20 09:20:00 CEST 2015
    1429514400
    1429600800
    crazylemon@pingo:~$ crontab -l
    */1 * * * * /bin/bash /home/crazylemon/test.sh

    Works for me :)

    Torej v mojem primeru se je cronjob zagnal vsako minuto.. for testing purposes :)

    Pa tvoj bash skript nima pravilne sintakse.
    if [ "$danes" -eq 7 ] ; then
    echo "bla bla"
    else
    echo "bla bla1"
  • CrazyLemon je dejal/-a:
    crazylemon@pingo:~$ cat test.sh 
    #!/bin/bash

    danes=$(date +%u)
    poned=$(date -d 'monday 09:20')
    petek=$(date +%s -d 'monday 09:20')
    jutri=$(date +%s -d 'tomorrow 09:20')
    testfile=\"/home/crazylemon/test.txt\"
    echo $(date) $danes >> \"$testfile\"
    echo $poned >> \"$testfile\"
    echo $petek >> \"$testfile\"
    echo $jutri >> \"$testfile\"
    crazylemon@pingo:~$ cat test.txt
    pon apr 20 10:27:01 CEST 2015 1
    pon apr 20 09:20:00 CEST 2015
    1429514400
    1429600800
    crazylemon@pingo:~$ crontab -l
    */1 * * * * /bin/bash /home/crazylemon/test.sh

    Works for me :)

    Torej v mojem primeru se je cronjob zagnal vsako minuto.. for testing purposes :)

    Pa tvoj bash skript nima pravilne sintakse.
    if [ "$danes" -eq 7 ] ; then
    echo "bla bla"
    else
    echo "bla bla1"
    Torej tudi meni ta skripta dela kot mora. Samo ni mi jasno kaj delajo tisti '\' pri spremenljivkah! :(
    Če prav razumem se string "$danes" spremeni v število!
    V cronu mi še vedno ne dela odpiranje spletne strani recimo.

    dusan@LifeBook:/home$ crontab -l
    31 9 * * 1-5 firefox https://www.bla.bla/ # JOB_ID_2
    * * * * * /home/dusan/Temp/test1.sh # JOB_ID_3
    Sem spremenil, da naj vsako minuto odpre spletno stran, pa se nič ne zgodi.


  • CrazyLemon Skrbnik
    uredil/-a 20. April, 2015
    Tisto doda forum ker 'escapea' navednice :) torej ignorirajvse '\' :)
    $danes spremenljivka ima no danes vrednost 1 ker je ponedeljek.

    Pred firefox moraš dodat še 'export DISPLAY=:0 &&'
    Ali pa spet vse lepo daš v en skript :)
    #!/bin/bash
    export DISPLAY=:0
    /usr/bin/firefox https://www.bla.bla/
  • dusang Član
    uredil/-a 20. April, 2015
    CrazyLemon je dejal/-a:
    Tisto doda forum ker 'escapea' navednice :) torej ignorirajvse '\' :)
    $danes spremenljivka ima no danes vrednost 1 ker je ponedeljek.

    Pred firefox moraš dodat še 'export DISPLAY=:0 &&'
    Ali pa spet vse lepo daš v en skript :)
    #!/bin/bash
    export DISPLAY=:0
    /usr/bin/firefox https://www.bla.bla/
    CrazyLemon hvala za trud in pomoč! Sedaj mi tudi spletno stran odpira.
    Samo še, da mi zbudi mlinček pa bo v redu! :)
    Sedaj imam takšen skript:
    #!/bin/bash

    # pripravimo spremenljivke
    danes=$(date +%u)
    petek=$(date +%s -d 'monday 09:20')
    jutri=$(date +%s -d 'tomorrow 09:20')
    Kontrola=\"/home/dusan/Sistem/Bujenje.txt\"

    # zapišemo spremenljivke v datoteko
    echo Danes je $(date +%A) > $Kontrola
    echo Jutri $jutri >> $Kontrola
    echo Petek $petek >> $Kontrola

    # postavimo pogoje ze izvedbo in zapišemo ukaze v datoteko za kontrolo
    if [ \"$danes\" -eq 5 ]
    then
    echo zagon v ponedeljek ob 09:20 >> $Kontrola
    rtcwake -m no -l -t $petek
    else
    echo zagon jutri ob 09:20 >> $Kontrola
    rtcwake -m no -l -t $jutri
    fi

    Skripta se požene 15 minut po tem ko bi se naj kalkulator zbudil!
    Za jutrišnje bujenje bom nastavil ročno potem pa bomo videli!
    Bom poročal kako se bo izteklo.
  • Pokaži že crontab vnos.. upam da si dodal da se zažene kot root crontab :)
    Ker drugače ti rtcwake ne bo čisto nič naredil ampak bo permission denied :)
  • CrazyLemon je dejal/-a:
    Pokaži že crontab vnos.. upam da si dodal da se zažene kot root crontab :)
    Ker drugače ti rtcwake ne bo čisto nič naredil ampak bo permission denied :)
    root@LifeBook:~# crontab -l
    35 9 * * 1-5 /home/dusan/Sistem/bujenje.sh # JOB_ID_6

    gnome-schedule sem pognal kot root!
  • CrazyLemon Skrbnik
    uredil/-a 20. April, 2015
    to se ne bo zagnalo :)

    moraš dodat /bin/bash /home/dusan/blabla
  • CrazyLemon je dejal/-a:
    to se ne bo zagnalo :)

    moraš dodat /bin/bash /home/dusan/blabla
    Hvala za opozorilo!

    root@LifeBook:~# crontab -l
    35 9 * * 1-5 /bin/bash /home/dusan/Sistem/bujenje.sh # JOB_ID_6

    In sedaj še končna skripta, če bi še komu koristila:
    #!/bin/bash

    # pripravimo spremenljivke
    danes=$(date +%u)
    jutri=$(date +%s -d 'tomorrow 09:20')
    petek=$(date +%s -d 'next monday 09:20')
    Kontrola=\"/home/dusan/Sistem/Bujenje.txt\"

    # zapišemo spremenljivke v datoteko
    echo Danes je $(date +%A) > $Kontrola

    # postavimo pogoje ze izvedbo in zapišemo ukaze v datoteko za kontrolo
    if [ \"$danes\" -eq 5 ]
    then
    echo Naslednji zagon $(date --date=@$petek) >> $Kontrola
    rtcwake -m no -l -t $petek
    else
    echo Naslednji zagon $(date --date=@$jutri) >> $Kontrola
    rtcwake -m no -l -t $jutri
    fi

    Pri petku je bilo potrebno dodati 'next monday', ker drugače je kazal na minuli ponedeljek!
  • Danes se notesnik ni pognal kot bi moral. Po kontrolni datoteki sodeč, se je včeraj (in danes) skripta izvedla. Res pa je, da sem včeraj tekom dneva sam zbudil notesnik enkrat ali dvakrat. Ima morda to kakšno zvezo z rtcwake? Če po prvem dremanju mlinček ročno zbudimo, ali s tem povemo rtcwake, da se je dejanje izvedlo?
    Ali da vprašam drugače! Kako napisati skripto, da se požene pred vsakim spanjem?
  • Ne vem kaj počne rtcwake.. preveri ko ga zbudiš če je rtcwake še vedno nastavljen (rtcwake -m show) :)

    Za skript pa https://askubuntu.com/questions/250690/how-to-run-a-script-when-suspending-resuming-sony-vaio-ubuntu-12-04
  • CrazyLemon je dejal/-a:
    Ne vem kaj počne rtcwake.. preveri ko ga zbudiš če je rtcwake še vedno nastavljen (rtcwake -m show) :)
    dusan@LifeBook:/home$ sudo rtcwake -m show
    [sudo] password for dusan:
    rtcwake: assuming RTC uses UTC ...
    alarm: on Thu Apr 23 07:19:48 2015

    Vendar sem sedaj večkrat zadevo pognal ročno.

    Sem še kar testiral in zadeva je taka. Če poženem skripto iz terminala, se lepo izvedejo vsi ukazi!
    Ko pa je bila skripta pognana od crona pa se ni izvedel ukaz rtcwake xxxxxxxxx!
    Po sistemu preizkušanja sem prišel do verjetno delujoče verzije tako, da sem v skripti dodal pot do rtcwake:
    /usr/sbin/rtcwake xxx xxx xxxx!
    V testnem logu sedaj vidim, da se tudi rtcwake požene. Bom videl kaj bo jutri!
  • Startanje notesnika deluje v glavnem v redu. Problem nastane, če notesnik ponovno zaženem recimo zaradi posodobitev. Takrat se podatek v datoteki wakealarm spremeni v nekaj in naslednji dan zadeva ne deluje.
    Pomeni, da bi moral zagnati skripto tudi ob zagonu!
  • kaj pa, če narediš, da je wakealarm "read only"?
Za komentiranje se prijavite ali pa se vpišite.