Screen: Problem mit -S -X hardcopy

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
simtin
Beiträge: 122
Registriert: 05.11.2003 21:58:54

Screen: Problem mit -S -X hardcopy

Beitrag von simtin » 12.01.2005 00:20:48

Hallo,

ich habe mir ein kleines crontab-Script geschrieben, das in regelmaessigen Abstaenden alle meine btdownloadcurses-screens ablaeuft und die Fortschritte in einer HTML-Datei ausgibt.

Die Basis dafuer ist folgendes:

Code: Alles auswählen

# globals
DIR=/var/www/torrents
OUTPUTFILE=$DIR/overview.html

# remove old files
rm $DIR/*.txt

# create new ones
for i in `screen -li | grep '(' | cut -d'.' -f1 | cut -f2`; do
        screen -S $i -X hardcopy -h $DIR/$i.txt;
done
Das funktioniert aber leider nur sporadisch, das heisst, manchmal sind die generierten Textdateien ganz einfach leer!
Ich kann absolut keinen Zusammenhang herstellen, woran das liegen koennte.

Hat irgendjemand eine Idee wie ich das an- oder umgehen koennte?

Danke im Voraus.

MfG,
Simon

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 13.01.2005 13:00:49

Hi Simon,

nur mal so ein Schuß ins Blaue. Es könnte vielleicht grad die Konsole im Suspend sein. Versuch es mal mit einem

Code: Alles auswählen

setterm -blank 0
oder

Code: Alles auswählen

setterm -powersafe off
in der Screen Sitzung.

Gruß
SubOptimal

simtin
Beiträge: 122
Registriert: 05.11.2003 21:58:54

Beitrag von simtin » 13.01.2005 16:06:15

Hallo,

danke fuer den Tip, aber ich kann leider abgesehen von den screen-Kommandos nichts in den screen-Sessions schreiben, weil ja wie gesagt btdownloadcurses-Prozesse darin laufen.

Trotzdem danke.

MfG,
Simon

simtin
Beiträge: 122
Registriert: 05.11.2003 21:58:54

Beitrag von simtin » 13.01.2005 16:41:07

Hallo,

mir ist gerade noch was aufgefallen.

Ich starte die Downloads automatisch, und zwar alle in einer Textdatei angegebenen mit:

Code: Alles auswählen

screen -d -m btdownloadcurses $i
($i ist natuerlich entsprechend zugewiesen)

screen -li zeigt mir dann auch sofort alle als 'detached' an. Wenn ich nun das Script zum Generieren der Hardcopies laufen lasse, sind die Textdateien leer.
Attache ich aber mal einen Screen (screen -R), und detache ihn wieder (C-A d), so ist kuenftig der Output dieses Screen nicht mehr leer!
D.h., die screens werden zwar richtig gestartet, sind aber evtl. am Anfang gefroren oder wie du sagst? Kann man das Screen evtl. noch irgendwie mit uebergeben beim Starten?

Danke und MfG,
Simon

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 15.01.2005 15:34:56

Hi Simon,

versuch es mal mit screen -d -r statt screen -S in Deinem cron-Script. Was anderes würd mir dann auch nicht mehr einfallen.
Wie sieht denn das Script zum erzeugen der Screen-Sizungen aus? Evtl. liegt der Fehler ja schon an einer früheren Stelle.

SubOptimal

simtin
Beiträge: 122
Registriert: 05.11.2003 21:58:54

Beitrag von simtin » 15.01.2005 18:17:25

Hallo,

screen -d -r aendert leider auch nichts.

Gestartet wird mit diesem Script:

Code: Alles auswählen

TORFILE=/etc/filelist.txt
cd /mnt/data/torrentstmp
case "$1" in
        all)
                echo "Starting all torrents from $TORFILE"

                for i in `cat $TORFILE | cut -d# -f1`; do
                        screen -d -m btdownloadcurses $i
                        echo "Started $i"
                done
                ;;
        last)
                echo "Starting last torrent from $TORFILE"
                FILE=`tail -n 1 $TORFILE | cut -d# -f1`
                echo "Started $FILE"
                screen -d -m btdownloadcurses $FILE
                ;;
        *)
                echo "Usage: $0 {all|last}"

                exit 1
                ;;
esac

exit 0
Das funktioniert auch wunderbar, aber es scheint, als waeren alle Screens erstmal eingefroren oder sowas, keine Ahnung.

Trotzdem danke fuer den Tip.

MfG,
Simon

Antworten