2009-05-28 14 views
3

Ich habe ein mystuff Bash-Skript eine Zeile wieRun lynx -dump im Hintergrund?

lynx -dump http://example.com >tmpfile 

und das Skript funktioniert gut, auch diesen Teil, außer, wenn ich es laufen nicht interaktiv enthält:

$ ./mystuff & 
[1] 3712 
$ jobs 
[1]+ Stopped 

Der Job ist gestoppt. Ich finde, dass Luchs der Schuldige ist. Auch die Ausführung dieses Befehls direkt von der Bash-Prompt bewirkt, dass der Job sofort gestoppt werden:

$ lynx -dump http://example.com >tmpfile & 
[1] 1836 
$ jobs 
[1]+ Stopped 

Warum wird nicht im Hintergrund laufen Luchs? Wie kann ich das beheben?

EDIT:

ich Luchs verwende, weil ich den rohen HTML analysieren nicht haben will. Der Unterschied zwischen wget und lynx -dump ist, dass lynx den HTML-Code rendern wird. Es wird alle Tags ausblenden, Text schön anordnen, usw.

Antwort

2

Lynx möchte mit Ihrem Terminal sprechen, kann aber nicht, also macht es einen SIGSTP (tty-Eingang) und wartet darauf, dass Sie den Prozess im Vordergrund stellen.

Wie mgb sagte oben: Verwenden Sie wget. wget -O tmpfile http://example.com macht das gleiche wie das, was Sie mit Luchs oben tun.

+0

Gibt es eine Möglichkeit, das tty zu fälschen oder umzuleiten? Ich weiß, dass ich -term = ansi (zum Beispiel) verwenden kann, um den Terminal-Typ zu erzwingen. –

+2

Gibt es einen besonderen Grund, dass Sie LYNX verwenden müssen? Versuchen Sie, die Tatsache auszunutzen, dass lynx die Seite in einem Textmodus rendert? Auf meinem System funktioniert 'w3m -dump' einwandfrei ohne ein STOP-Signal zu verursachen. –

+0

Ich war nicht w3m bekannt, danke! Ich habe es überprüft und es sieht so aus, als würde es funktionieren. Ich schätze die Erklärung und die Problemumgehung. –

1

Nicht die Antwort, die Sie suchen, aber könnten Sie einfach wget stattdessen verwenden?

+0

+1, sicherlich wget verwenden. –

0

Auf meinem System funktioniert Ihr Lynx-Befehl so wie er ist. Versuchen Sie dies und sehen, was passiert:

0

Wir hatten Glück laufen lynx --Quelle http_setting: // was auch immer | bash.

Die Ausführung als Bash erlaubte es dem Hintergrundprozess, mit meinen persönlichen Zugangsdaten und ohne Diskrepanzen zu laufen.

+0

Danke, aber diese Antwort vermisst den Punkt. 'lynx -source' ist das selbe wie' wget', es liefert rohen HTML und muss dann analysiert werden. Ich habe versucht, den HTML-Parser in Lynx zu nutzen, um vereinfachten, lesbaren Text zu erhalten. –