You are not logged in.

DeaD_EyE

Administrator

  • "DeaD_EyE" started this thread

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

1

Friday, July 27th 2007, 12:38am

[Linux] Codeschnipsel für die Shell

Löscht defekte bzw. verwiesene Links. Setzt eine gewisse Version von "find" heraus.

Source code

1
find -L -type l -exec rm '{}' \;


Komprimiert alle Dateien im angegebenen Verzeichnis inkl. Unterverzeichnisse mit bzip2

Source code

1
find /PFAD/ -exec bzip2 -9  '{}' \;


Löscht alle .ztmp Dateien. Das kann helfen um Speicherplatz zu sparen, wenn man Fastdownload nutzt.

Source code

1
find ./cstrike/ -name '*.ztmp' -exec rm '{}' \;


Listet alle Maps ohne Endung auf und speichert sie alphabetisch sortiert in der maplist.txt (funktioniert auch bei mehreren Punkten im Dateinamen)

Source code

1
ls /irgendwo/cstrike/maps/ | grep '\.bsp$' | sed 's/\.bsp$//' | sort > /irgendwo/cstrike/maplist.txt


Zählt die Maps

Source code

1
ls ./cstrike/maps/ *.bsp | wc -l


Listet Maps auf, zu denen die Nav-Dateien fehlen

Source code

1
for map in $(ls ./cstrike/maps/*.bsp | sed 's/.bsp$//'); do if [ ! -f ${map}.nav ]; then echo "Missing: ${map}.nav"; fi; done

DeaD_EyE

Administrator

  • "DeaD_EyE" started this thread

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

2

Wednesday, August 22nd 2007, 4:51pm

Re: [Linux] Codeschnipsel für die Shell

Alle Prozesse von einem bestimmten User killen:

Source code

1
pkill -u user


Alle srcds-Prozesse eines Users killen

Source code

1
pkill -u user srcds

DeaD_EyE

Administrator

  • "DeaD_EyE" started this thread

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

3

Saturday, June 19th 2010, 11:15pm

Re: [Linux] Codeschnipsel für die Shell

Anzahl der Spawnpunkte einer Map ausgeben:

Source code

1
grep -U -c 'info_player_' mapname.bsp

Der MadMakz hat dazu noch ein Beispiel in PHP geschrieben:

PHP Source code

1
2
3
4
5
6
7
8
$file "mapname.bsp";
$fp fopen($file"r")or die("Noob!");
$string fread($fpfilesize($file));
$count preg_match_all("/info_player_/"$string$matches);
fclose($fp);

echo $count;
?>

DeaD_EyE

Administrator

  • "DeaD_EyE" started this thread

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

4

Saturday, September 18th 2010, 11:37am

Re: [Linux] Codeschnipsel für die Shell

Anmerkung: Wenn nur ein Fenster im Screen gestartet wird, dann window=0 verwenden. Das erste Fenster fängt bei 0 an. Wurde ein Name für das Fenster gesetzt, kann stattdessen wie im Beispiel der Name verwendet werden.

Shellscript:

PHP Source code

1
2
3
4
5
name="war1" #Setze Screenname
window="server" #Setze Fenstername
concommand="say Willkommen auf unserem tollen Server..." #Befehl festlegen, der an die Konsole gesendet wird
screen -S $name -p $window -X stuff "$concommand#Text in den Screen war1 zum Fenster server senden
screen -S $name -p $window -X stuff $'\n' #Dafür sorgen, dass Enter gedrückt wird (ANSI-C Sequenz muss verwendet werden um \n senden zu können)


Shellscript mit Funktion:

PHP Source code

1
2
3
4
5
6
7
#$1 = name
#$2 = window
#$3 = concmd
function concmd {
        screen -$-$-X stuff "$3"
        screen -$-$-X stuff $'\n'
}


Aufruf der Funktion:

PHP Source code

1
2
concmd war1 server "echo Milch ist gesund"
#Der letzte Teil muss quotiert werden, da die Shell ansonsten jedes Leerzeichen als Trenner für ein neues Argument interpretiert.


Python mit Tupel und Addition von Strings:

PHP Source code

1
2
3
4
5
6
7
import os #Importiert das Modul os, mit dem man z.B. Befehle bzw. Programme ausführen kann
concommand "echo Es soll nur ein Test sein" #Legt den Text fest, der an den Server gesendet wird.
name "war1" #Legt den Screennamen fest
window "server" #Legt das Fenster im Screen fest
stuff "$'" concommand "\n'" #fügt durch Addition den Befehl in die Ansi-CSequenz ein: $'echo Es soll nur ein Test sein'
screen_cmd "screen -S %s -p %s -X stuff %s" % (namewindowstuff#Speichert die Variable screen_cmd und ersetzt %s durch die Variablen in der Tupel
os.system(cmd#Befehl senden


Python mit Adition von Strings:

PHP Source code

1
2
3
4
5
import os
concommand "echo Es soll nur ein Test sein"
name "war1"
window "server"
os.system("screen -S " name " -p " window " -X stuff $'" concommand "\n'"#Fügt den Befehl hier erst komplett zusammen


Python-Funktion:

PHP Source code

1
2
3
import system
def concmd(namewindowconcommand):
    os.system("screen -S " name " -p " window " -X stuff $'" concommand "\n'")


Aufruf der Funktion:

PHP Source code

1
concmd('war1''server''echo Soll nur ein Test sein')


Um sicher zu gehen, dass nicht irgendein Admin etwas zuvor in die Konsole geschrieben hat und vergaß Enter zu drücken, kann man beim Aufruf der Funktion immer zuerst Enter an die Konsole senden.

Python-Funktion:

PHP Source code

1
2
3
4
import system
def concmd(namewindowconcommand):
    os.system("screen -S " name " -p " window " -X stuff $'\n'")
    os.system("screen -S " name " -p " window " -X stuff $'" concommand "\n'")


Schellscript-Funktion:

PHP Source code

1
2
3
4
5
6
7
8
#$1 = name
#$2 = window
#$3 = concmd
function concmd {
    screen -$-$-X stuff $'\n'
    screen -$-$-X stuff "$3"
    screen -$-$-X stuff $'\n'
}


PS: Terrorkarotte hat mich auf den Stuff-Befehl gebracht. THX

Impact

Super Moderator

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

5

Sunday, December 4th 2011, 11:04pm

Manchmal kommt es vor dass man automatisiert zB Demos synchronisieren mag.
Es kann jedoch sein dass die Demo gerade noch geschrieben wird, und diese Datei wollen wir natürlich nicht synchronisieren.
Ein Beispiel eines Checks könnte so aussehen:

Angucken

PHP Source code

1
2
3
4
5
6
for map in $(ls *.dem); do
VAR="$(lsof $map)"
    if [[ $VAR == "" ]]; then
        # CODE
    fi
done


MfG
Impact

This post has been edited 6 times, last edit by "Impact" (Dec 4th 2011, 11:59pm)


DeaD_EyE

Administrator

  • "DeaD_EyE" started this thread

Posts: 3,980

Location: Hagen

Occupation: Mechatroniker (didaktische Systeme)

wcf.user.option.userOption53: Nein

  • Send private message

6

Monday, December 5th 2011, 5:37pm

Geschickt geregelt würde ich sagen.