it-swarm.com.de

Wie kann ich einen Cron-Befehl erstellen, der einen Befehl innerhalb eines getrennten Bildschirms ausführt?

Ich habe einen Bildschirm erstellt, aber kann ich jetzt irgendwie einen Befehl ausführen, der Befehle im getrennten Bildschirm ausführt?

Ich weiß nicht einmal, ob dies möglich ist, aber wenn ja, wird es wahrscheinlich etwas Einfaches und Leichtes für Sie sein.

Vielen Dank für Ihre Mühen.

5
MattB

Hinweis: Auf dem Originalposter wurde gefragt, wie ich das in Cron machen kann. Ich habe die Antwort aktualisiert, um das zu beheben.

  • Holen Sie sich das 'inscreen' Skript und setzen Sie es in ~/bin/:

     # download 'inscreen' script from https://Gist.github.com/1019125[.____.)wget -O ~/bin/inscreen https://Gist.github.com/gists/1019125/ download 
     chmod 755 ~/bin/inscreen 
    
  • erstelle eine Screen Session mit dem Namen 'cronjobs':

    screen -d -m -S cronjobs

    Sie müssen dafür sorgen, dass dies bei jedem Bootvorgang geschieht, oder Sie müssen jedem Crontab-Eintrag unten '--new-if-needed' hinzufügen.

  • Füge Einträge in cron mit inscreen hinzu, crontab sieht so aus:

     PATH = /home/YOURNAME/bin:/usr/sbin:/usr/bin:/sbin:/bin[.____.[.____.‹* * * * * Cronjobs auf dem Bildschirm - sh - c 'echo $ (Datum): start; Schlaf 30; echo $ (Datum): end; sleep 4 '
     0 0 * * 0 inscreen cronjobs - offen halten - titelerinnerung echo ==== RUF DEINE MAMMA AN ==== 
     0 0 * * 1 inscreen cronjobs - Fenster 0 ls /tmp
    

Das obige wird:

  • jede minute öffne ein neues fenster in der 'cronjobs' bildschirmsitzung, die das datum schreibt, 30 sekunden schläft und dann schließt. Das Fenster wird beim Verlassen geschlossen.
  • jeden sonntag um mitternacht öffne ein neues fenster mit dem titel 'erinnerung', das "==== RUF DEINE MAMMA ====" sagt und du musst die eingabetaste drücken, um das fenster zu schließen.
  • jeden Montag um Mitternacht wird im ersten Fenster der 'Cronjobs'-Sitzung' ls/tmp 'ausgeführt. Beachten Sie jedoch, dass keine anderen '--window 0'-Jobs gleichzeitig ausgeführt werden können.
3
smoser

Smoser Antwort ist gut, wenn auch ein wenig komplex. Sie können dies auch einfach zu einfach vereinfachen

screen -d -m -S mysession -t label sleep 1m

mit dem Vorbehalt, dass der Bildschirm beim Beenden des Prozesses einfach verschwindet und Sie nicht sehen können, was er auf den Bildschirm geschrieben hat. Das könnte in Ihrem Fall in Ordnung sein oder auch nicht. Sie können dies ändern, indem Sie in Ihrem .screenrc

defzombie ZZ 

dies bedeutet, dass die Bildschirme nach dem Beenden des Vorgangs herumhängen, bis Sie Z drücken.

1
poolie