Toon posts:

script uitvoeren zodra idle

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een Bash script laten uitvoeren zodra mijn PC in en uit idle gaat.
Het makkelijkste lijkt mij om dit door de screensaver te laten triggeren, maar weet nog niet hoe.
Ik werk met Gnome trouwens.

Dus als ik zo'n 10 minuten niet typ en muis, moet er een script gedraaid worden, en als ik weer ga typen/muizen moet er ook weer een script gedraaid worden.

Hebben jullie enig idee hoe dit te realiseren?

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

screensaver aanpassen?

althans, daar doet het mij aan denken.

Zaram module kopen voor je glasvezelaansluiting?


  • Wilke
  • Registratie: December 2000
  • Laatst online: 15:10
Dat lijkt mij inderdaad ook het makkelijkst. Kun je niet in plaats van (bv.) xscreensaver of wat je momenteel ook gebruikt, gewoon iets anders starten?

(gebruik zelf geen Gnome maar het lijkt me dat je dat vast wel ergens kunt instellen)

Verwijderd

Topicstarter
Ik heb net de man page van xscreensaver doorgelezen en wat getest.
Het blijkt dat xscreensaver het lopende screensaver-programma killed als de tijd voorbij is.
Zodoende is er dus geen script te draaien zodra de user weer actief wordt.

Nu kan dat vast met een cron-constructie opgevangen worden, maar dan moet ik checks gaan doen bij het booten (in geval van een crash o.i.d.) en wordt het allemaal veel te ingewikkeld voor het doel. Ook werkte mijn test script niet, waarschijnlijk omdat het geen volwaardig screensaver programma was. :+

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 30-01 01:49

Sprite_tm

Semi-Chinees

Mja, als je goed leest word het screensaver-prog door middel van een SIGTERM gekilled. Da's niet hetzelfde als een SIGKILL: een term is alleen een indicatie aan het programma dattie geacht word dood te gaan, terwijl bij een sigkill het programma meteen uit het geheugen geflikkerd word. Zorg dat je dus in je proggie of script je sigterm-handler alles laat doen wat je wil doen en dan het hele script afsluiten en je bent er.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


Verwijderd

Topicstarter
Sprite_tm schreef op vrijdag 08 juli 2005 @ 17:27:
Mja, als je goed leest word het screensaver-prog door middel van een SIGTERM gekilled. Da's niet hetzelfde als een SIGKILL: een term is alleen een indicatie aan het programma dattie geacht word dood te gaan, terwijl bij een sigkill het programma meteen uit het geheugen geflikkerd word. Zorg dat je dus in je proggie of script je sigterm-handler alles laat doen wat je wil doen en dan het hele script afsluiten en je bent er.
Dat klinkt goed, al zal ik als bash scripting newbie dan nog een hoop erbij moeten leren, maar okee. :)

Maar ik bedenk me net dat een screensaver geen oplossing kan zijn. Want ik wil dat dit op de achtergrond gebeurt, dus ook als ik bijvoorbeeld een film kijk en zodoende idle ben, en dan wil je niet dat zwarte scherm over je film heen natuurlijk.. :+

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 02-02 18:49
Verwijderd schreef op vrijdag 08 juli 2005 @ 18:34:
[...]

Dat klinkt goed, al zal ik als bash scripting newbie dan nog een hoop erbij moeten leren, maar okee. :)

Maar ik bedenk me net dat een screensaver geen oplossing kan zijn. Want ik wil dat dit op de achtergrond gebeurt, dus ook als ik bijvoorbeeld een film kijk en zodoende idle ben, en dan wil je niet dat zwarte scherm over je film heen natuurlijk.. :+
dat is dan mooi opgelost, want de meeste players (zoals totem en gmplayer dacht ik ook) zorgen ervoor dat de screensaver niet opspringt, als je aan het kijken bent :)

Verwijderd

Wat voor soort script wil je precies uitvoeren? Want als je gewoon geen last wilt hebben van achtergrondprocessen, kun je wellicht ook met nice nog iets bereiken.

  • Wilke
  • Registratie: December 2000
  • Laatst online: 15:10
Verwijderd schreef op vrijdag 08 juli 2005 @ 18:34:
Dat klinkt goed, al zal ik als bash scripting newbie dan nog een hoop erbij moeten leren, maar okee. :)
Het valt mee:

code:
1
2
3
trap "echo \"Please don't kill me\"; exit" SIGTERM SIGINT

while true; do sleep 60; done


Op de plek van 'echo Please don't kill me' zet je dan natuurlijk een aanroep naar het andere script, dat je wilt uitvoeren bij het beeindigen van de idle mode. Als je de 'exit' weg laat in de eerste regel zal je script trouwens niet worden gekilled door een SIGINT of SIGTERM (resp. Ctrl-C drukken of gewoon 'kill id-van-script' typen). De enige manier om het dan te killen is met -9.

Verwijderd

Topicstarter
Wilke schreef op zaterdag 09 juli 2005 @ 17:49:
[...]
Het valt mee:
[..knip..]
Thanx, weer wat geleerd.. 8)
Maar helaas lukt het me niet om het script uitgevoerd te krijgen, omdat het waarschijnlijk niet eens in de buurt komt van de eisen die xscreensaver er aan stelt.
Zo krijg ik nu een "test: -window-id: binary operator expected" als xscreensaver het script wil uitvoeren, en eerder kreeg ik een "missing argument fout".

Eigelijk wilde ik het script te gebruiken om de bandbreedte van m'n server omhoog te gooien als ik idle was, maar voor dat specifieke doel heb ik wellicht meer aan traffic shaping, dus dat ga ik i.i.g. even doornemen. :+

Maar vooralsnog zie ik ook nut in opschoonscripts, backupscripts e.d. tijdens idle tijd, dus toch ben ik benieuwd hoe ik dit kan aanpakken. Ik weet dat Gaim ook een idle detectie heeft, gebaseerd op X muis/toetsenbord activiteit, maar dat zal wel wat ingewikkelder in elkaar zitten, en wat nou als je in de console werkt?
Hmmz, zo wordt een script laten uitvoeren bij en na (echt) idle toch ineens wat lastiger.. :)

[ Voor 3% gewijzigd door Verwijderd op 09-07-2005 18:55 ]


Verwijderd

Topicstarter
Update: ik heb nu een programma'tje gevonden die bij een gemiddelde cpu load van 10% over bijv. 5min een prog kan uitvoeren en later ook weer stoppen. Dit lijkt me voor het doel "doe eens wat in je idle tijd" een geschikte tool.

Het enige waar ik nu op vast loop, is de SIGSTOP (zie website) die ik niet weet af te vangen.
Eerlijk gezegd ben ik ook nog te lui geweest om onderzoek te doen of SIGSTOP uberhaubt wel bestaat en hoe dat af te vangen, dat probeer ik vanavond wel weer. :)
Pagina: 1