— Linux Allerlei —

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

— Linux Allerlei —

Beitrag von AND51 »

Hallo!

Hab entdeckt, dass ich ein Programm mit nohup im Hintergrund laufen lassen und mich trotzdem beruhigt aus dem Terminal abmelden kann.
Das mache ich dann so:

Code: Alles auswählen

nohup ./TacticalOpsServer.sh
Dazu hab ich 2 Fragen:
  1. Oft lese ich, dass man ein Ampersand'$' anhängt. Warum? Was bewirkt das?
  2. Die Ausgabe wird ja in die Datei 'nohup.out' bzw. '$HOME/nohup.out' umgeleitet. Lasse ich meinen Gameserver aber kontinuierlich laufen, häuft sich dessen Logausgabe in 'nohup.out' an. Ich brauche die Ausgabe sowieso nicht.
    Wie kann ich die Ausgabe in eine Datei gänzlich abstellen?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Moin,
1. Du meinst bestimmt ein "&" das is dafür da den Prozess in den Hintergrund zu verschieben, ansonsten blockierst du dir damit die Konsole
2.

Code: Alles auswählen

nohup ./file > /dev/null
MfG
125
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ich nutze screen. Das ist irgendwie angenehmer für mich.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Was ist denn /dev/null?
Ist das ein spezieller Ordner? Gibts davon noch mehr?
Und ist /dev/null sozusagen der Papierkorb, in den die Ausgabe direkt geschrieben wird oder wie habe ich mir das vorzustellen?

screen habe ich mir gerade mal kurz angesehen und ich finde das auf Anhieb grad etwas unhandlich/unübersichtlich.
Habe mich schon an nohup gewöhnt; und wenn ich einen der Prozesse beenden will, reicht top.



Noch was zu den Prioritäten von Prozessen: Ich möchte von einem in den Hintergrund geschickten Prozess die Priorität leicht erhöhen. Das mache ich nicht mit nice oder renice, sondern mit top r PID -1.
Ist das richtig?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

/dev/null ist ein virtuelles Gerät,
das alle Daten die es empfängt ins Nirwana schickt,
/dev/zero Gibt unendlich viel "null Blöcke" aus
Man kann es zum Beispiel mit dd verwenden, um eine Festplatte mit Nullern zu überschreiben.

/dev/random gibt dir Zufallszahlen, blockiert jedoch, sobald eine groß genuge Entropie nicht mehr gewährleistet wird.

/dev/urandom gibt dir unabhängig von der Entropie Zufallszahlen.

Ob der zweite Befehl richtig ist?
Wenn er so dokumentiert ist, dann ja.
Aber wie du schon schreibst, ist eigentlich renice dafür vorgesehen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Danke für die Infos.

Hab verstanden, was diese "virtuellen Gerätedateien" bezwecken.
So langsam versteh ich auch diesen Witz hier. :D

Noch mal zur Priorität: Hab gelesen, diese gehen unter Linux von -20 (hoch) bis 20 (niedrig).
Das heißt also, mit -1 als Wert läuft der Prozess doch mit leicht höherer Geschwindigkeit?
Ich bin etwas verwirrt, denn der Taskmanager top zeigt den PRI-Wert des Programms unverändert an (z. B. 25). Wenn ich mit top den Prozess "renice", und den Wert -10 zuweise, dann ändert sich lediglich der NI-Wert auf -10 und dem PRI-Wert werden 10 abgezogen, also auf -15 gesetzt.


Wie hängen die PRI- und NI-Werte genau zusammen, warum schwankt der PRI-Wert ohne mein zutun manchmal um +1 und welche Priorität würdet ihr einem "mittelschweren" Gameserver im Allgemeinen so zuweisen?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Also Linux nutzt ein dynamisches Prioritäten-Scheduling. Da wird die Priorität bei jeder Ressourcenzuteilung um 1 erniedrigt bis es bei -20 ist, dann wirds auf den nice wert zurückgesetzt meines Wissens. Wahrscheinlich aktualisiert sich die Anzeige so langsam, dass du nicht siehst wie die Priorität sich verändert (So schnell kann kein Mensch sehen und die Ausgabe dauert länger als einem lieb ist).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Könnte auch daran liegen, dass top standardmäßig nur alle 5 Sekunden die Anzeige aktualisiert.
Könnte man mit 'd' oder 's' anders einstellen.


Aber DarkDragon, wo du schon mal da bist:

Die PB-Installation, bei der du mir geholfen hast, auf meinem vServer (nochmals vielen Dank dafür!), streikt.
Dachte ich grad jedenfalls, dabei musste ich ja bei jedem Login die Umgebungsvariablen neu anpassen. Geht das übrigens automatisch, sodass ich das nicht jedes mal machen muss?


Übrigens hatte ich ja vor, meine Webseite komplett von CGI/Perl auf PureBasic umzustellen. Dabei bin ich schon einen Schritt weiter. Und zwar kenne ich ja von Perl schon die Shebang-Zeile

Code: Alles auswählen

#!/usr/bin/perl -w
Wie ich heute Nacht :coderselixir: herausgefunden habe, funktioniert das auch bei jeder anderen Datei!

Schreibe ich also in die 1. Zeile eines PB-Quellcodes

Code: Alles auswählen

#!/purebasic/compilers/pbcompiler -q
wird der Code automatisch kompiliert und ausgegeben!! GEIL!!!! :bounce:

Der Haken: Die Shebang-Zeile verursacht für den Kompiler einen Syntaxerror. Stimmt ja auch, PureBasic kann mit dieser Zeile nichts anfangen. Wie kann ich das elegant umgehen? Any ideas?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Wie schon gesagt:
"vi ~/.profile" da kannst du alles was beim login deines users ausgeführt werden soll reinschreiben. Also z.B. die Exports.

Desweiteren willst du auf CGI umsteigen, nicht auf PureBasic. Du willst die CGI files nur während der Laufzeit generieren.

Und wegen der Zeile:
Mach doch einfach #!/purebasic/compilers/pbcompilercallerscript -q
Und programmier eine Anwendung bzw ein Skript (mit dem Namen pbcompilercallerscript wie oben), die den PB Code bekommt, die Zeile entfernt, kompilliert und ausführt, so wie ich es dir gesagt hab.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> "vi ~/.profile" da kannst du alles was beim login deines users ausgeführt werden soll reinschreiben
Ah die Datei wars. Ich wusste, dass es so eine Datei geben muss, aber nicht mehr, wie sie heißt.

> Desweiteren willst du auf CGI umsteigen, nicht auf PureBasic
Hm... Verbirgt sich dahinter ein Denkfehler oder ein begriffliches Missverständnis meinerseits?
CGI bedeutet "Common Gateway Interface", steckt darin die Sache mit der Shebang-Zeile? Oder versteh ich das komplett falsch?

> programmier eine Anwendung bzw ein Skript, die den PB Code bekommt, die Zeile entfernt, kompilliert und ausführt
Hm, also doch den 'Umweg' über eine externe Anwendung. So schlimm ist das ja nun nicht, dann muss ich das halt so machen.
Dachte nur, jetzt wo ich die Shebang-Zeile (wieder)entdeckt habe, dass es noch einfach gehen könnte.

@ DarkDragon
Wenns dir nichts ausmacht, könntest du die Liste der benötigten Libraries nochmal posten? Damt ich sie habe, falls ich PB mal eigenmächtig neu installieren muss?

Vielleicht schreibe ich mal beizeiten ein kleines Tutorial, wie man PB unter Linux installiert und einsetzt. Mal sehen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten