[Bash] Screen starten, output daarin naar file sturen.

Pagina: 1
Acties:

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Iedereen kan wel wat output van een programma doorsturen naar een bestand.
./blaat > iets.txt bijvoorbeeld.

Maar nu:

PARAMS="-blaat -nogwat > output.txt"
screen -d -m -S screennaam $DIR/blaat $PARAMS

Nu verwacht ik een bestand output.txt te krijgen met alles wat er door het commando $DIR/blaat gebeurd in een screen. Niet dus. ook nog bij > output.txt geprobeerd: > $DIR/output.txt , zonder success.

Vermoedelijk dat het commando screen wordt doorgestuurd, in plaats van het commando $DIR/blaat. Maar alsnog: dan zou ik wél een lege file moeten krijgen!

Heeft iemand enig idee wat ik hier fout doe?

(Op Debian 3.0)

edit:
Het lijkt erop dat bash iets uit een string gewoon niet meer uitvoert. Moet ik daarvoor die ` ` tekens gebruiken soms?
Als ik > output.txt niet in de PARAMS string zet,maar gewoon achter het commando, dan krijg ik nu wel een leeg filetje te zien, vermoedelijk met de output van screen. Hoe kan ik in 1 script verwerken dat in de screen output van het programma blaat wordt verstuurd naar een file?

[ Voor 27% gewijzigd door pierre-oord op 24-10-2004 14:34 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Is een simpel bash script niet eenvoudiger om dit te realiseren? Ik krijg het hier ook niet voor elkaar; waarschijnlijk omdat de pipe aan het screen command, en niet aan het $DIR/blaat commando wordt gehangen.

[ Voor 144% gewijzigd door Spider.007 op 24-10-2004 14:49 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Dit staat in een bash script ;) , deze regel!

Enig idee hoe het dan moet?
Het enige waar ik aan dacht is:
Via script screen aanroepen. Screen roept dan script aan, in dat script staat dan ./blaat > output.txt .

Da's alleen weer zo lang, al die scripts overal, met 2 regels, is niet handig :)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

pierre-oord schreef op 24 oktober 2004 @ 14:45:
[...]

Het enige waar ik aan dacht is:
Via script screen aanroepen. Screen roept dan script aan, in dat script staat dan ./blaat > output.txt .

Da's alleen weer zo lang, al die scripts overal, met 2 regels, is niet handig :)
Dat bedoelde ik dus ja :) Heb je hier niets aan?
exec [[fdpat] newcommand [args ...]]

Run a unix subprocess (specified by an executable path newcommand and
its optional arguments) in the current window. The flow of data between
newcommands stdin/stdout/stderr, the process originally started in the
window (let us call it "application-process") and screen itself (win-
dow) is controlled by the filedescriptor pattern fdpat. This pattern
is basically a three character sequence representing stdin, stdout and
stderr of newcommand. A dot (.) connects the file descriptor to screen.
An exclamation mark (!) causes the file descriptor to be connected to
the application-process. A colon ( combines both. User input will go
to newcommand unless newcommand receives the application-process' out-
put (fdpats first character is `!' or `:') or a pipe symbol (|) is
added (as a fourth character) to the end of fdpat.

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Steven
  • Registratie: December 2000
  • Laatst online: 22-01 13:06
Ik kan het ff niet zo snel testen; maar dit lijkt mij logisch:
code:
1
screen -d -m -S screennaam '$DIR/blaat -blaat -nogwat > output.txt'

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Steven, dat werkt niet, screen wordt dan helemaal niet gestart. Ikheb het ook met " " geprobeerd, zonder succes. Spider, ik ga het even proberen, post zo resultaat hierbij.
This is actually a system call that replaces the current process with a specified command. It is mostly seen in combination with find, to execute a command on the files found. When used as a standalone in a script, this forces an exit from the script when the exec'ed command terminates. An exec is also used to reassign file descriptors. exec <zzz-file replaces stdin with the file zzz-file.

Example 3-59. Effects of exec

#!/bin/bash

exec echo "Exiting $0."
# Exit from script.

# The following lines never execute.
echo "Still here?"

exit 0
Klinkt toch niet als dat ik het kan gebruiken?

[ Voor 66% gewijzigd door pierre-oord op 24-10-2004 15:02 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Wilke
  • Registratie: December 2000
  • Laatst online: 16-02 19:49
Kijk ook eens naar het tooltje 'tee'. Of je er in dit verband iets aan hebt vraag ik me af, maar who knows.

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Exec kan overigens wel meer, maar dan zou ik hetook in screen moeten uitvoeren denk ik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# reassign-stdout.sh

LOGFILE=logfile.txt

exec 6>&1           # Link file descriptor #6 with stdout.
                    # Saves stdout.

exec > $LOGFILE     # stdout replaced with file "logfile.txt".

# ----------------------------------------------------------- #
# All output from commands in this block sent to file $LOGFILE.

echo -n "Logfile: "
date
echo "-------------------------------------"
echo

echo "Output of \"ls -al\" command"
echo
ls -al
echo; echo
echo "Output of \"df\" command"
echo
df

# ----------------------------------------------------------- #

exec 1>&6 6>&-      # Restore stdout and close file descriptor #6.

echo
echo "== stdout now restored to default == "
echo
ls -al
echo

exit 0


edit:
Tee had ik al wat over gelezen, maar dat ding nog op de manier van
./iets | tee iets.txt

Dit zorgde ervoor dat alles in een file komt, en op je output.

[ Voor 17% gewijzigd door pierre-oord op 24-10-2004 15:08 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

pierre-oord schreef op 24 oktober 2004 @ 15:07:
Exec kan overigens wel meer, maar dan zou ik hetook in screen moeten uitvoeren denk ik:
code:
1
[...]


edit:
Tee had ik al wat over gelezen, maar dat ding nog op de manier van
./iets | tee iets.txt

Dit zorgde ervoor dat alles in een file komt, en op je output.
Ik zie nu dat mijn c/p niet volledig was; het komt uit de manpage van screen waarin duidelijk wordt gemaakt dat je initialisatie scripts kan gebruiken, en deze mee kan geven aan een screensessie. Heb je dat al eens geprobeerd? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Spider.007 schreef op 24 oktober 2004 @ 15:22:
[...]

Ik zie nu dat mijn c/p niet volledig was; het komt uit de manpage van screen waarin duidelijk wordt gemaakt dat je initialisatie scripts kan gebruiken, en deze mee kan geven aan een screensessie. Heb je dat al eens geprobeerd? :)
Ik weet niet of ik je helemaal begrijp.

Ik heb nu geprobeerd:

screen -d -m -S $NAME exec $DIR/blaat $PARAMS > /servers/output.txt

en
screen -d -m -S $NAME exec $DIR/blaat "$PARAMS > /servers/output.txt"

In beide gevallen zie ik geen screen uiteindelijk met screen -ls.

Iemand anders gaf nog aan dat ik kon escapen, ook gedaan:
screen -d -m -S $NAME $DIR/blaat $PARAMS \> /servers/output.txt

Ik hoopte dat het commando dan nu zou worden geescaped en in screen gebruikt, maar geen succes ;(

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • richardt
  • Registratie: Mei 2002
  • Laatst online: 08-03-2025
Het programma 'screen' vangt nu juist de file-descriptors af, om ze zelf te gebruiken (bijvoorbeeld om ze te detachen of kopieren). Vandaar dat een simpele redirect niet zal werken.

Toch kan screen de output van een window loggen, tenminste als je dat zo bedoelt. Gebruik daarvoor de -L optie van screen.... Er wordt dan een file screenlog.n aangemaakt waarbij in dit geval n=0.

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
richardt schreef op 24 oktober 2004 @ 16:06:
Het programma 'screen' vangt nu juist de file-descriptors af, om ze zelf te gebruiken (bijvoorbeeld om ze te detachen of kopieren). Vandaar dat een simpele redirect niet zal werken.

Toch kan screen de output van een window loggen, tenminste als je dat zo bedoelt. Gebruik daarvoor de -L optie van screen.... Er wordt dan een file screenlog.n aangemaakt waarbij in dit geval n=0.
-L tells screen your auto-margin terminal has a writable last-position on the screen. This can also be set in your .screenrc by specifying `LP' in a "termcap" command.
Is er iets mis met mijn screen? Nergens zo'n optie te vinden in de manpage?

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • raoulduke
  • Registratie: Oktober 2003
  • Niet online

raoulduke

Get in!

Mijn screen heeft -L:

bash-2.05b$ screen --version
Screen version 4.00.02 (FAU) 5-Dec-03

Misschien een oudere versie?

Remember, if you have any trouble you can always send a telegram to the Right People.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

pierre-oord schreef op 24 oktober 2004 @ 16:17:
Is er iets mis met mijn screen? Nergens zo'n optie te vinden in de manpage?
michael@cervix:~$ screen --help | grep logging
-L            Turn on output logging.
raoulduke schreef op 24 oktober 2004 @ 16:20:
Mijn screen heeft -L:

bash-2.05b$ screen --version
Screen version 4.00.02 (FAU) 5-Dec-03

Misschien een oudere versie?
versie 3.09.15 heeft -L ook iig :P

[ Voor 33% gewijzigd door Erkens op 24-10-2004 16:22 ]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Ik heb 3.09.11, kent wel -L maar alleen voor wat ik net noemde, is debian stable, ik ga deze eens upgraden naar testing moment...

Edit
Nou het werkt goed, ikkrijg idd een screenlog.0 eruit :)

Wanneer wordt n hoger eigenlijk? Bij een bepaalde grootte?
Zo ja kan ik dat instellen? De man geeft dat helaas niet aan ;(

[ Voor 44% gewijzigd door pierre-oord op 24-10-2004 17:10 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • xzenor
  • Registratie: Maart 2001
  • Laatst online: 14-10-2022

xzenor

Ja doe maar. 1 klontje suiker.

ik snap nog steeds niet echt wat je nou wilt..
Waarom wil je per se screen gebruiken?
als ik dit lees:
Nu verwacht ik een bestand output.txt te krijgen met alles wat er door het commando $DIR/blaat gebeurd in een screen. Niet dus. ook nog bij > output.txt geprobeerd: > $DIR/output.txt , zonder success.
Dat is toch precies wat 'tee' doet?
Wat is dan het probleem? Waarom zit je zo aan die screen vast?

Je antwoord op de 'tee' is
Tee had ik al wat over gelezen, maar dat ding nog op de manier van
./iets | tee iets.txt
Maar dat is toch wat je wilt?
Maakt het zoveel uit dan dat je | gebruikt in plaats van > ?

Je kan ook nog aan nohup denken.. die pompt zijn output standaard al naar een file..
hoef je niet eens te redirecten.
Pagina: 1