Alle posts tagged mit Linux

Script unter Linux als anderer Benutzer ausführen

Linux Solutions
root@server01: su -c  /usr/scripting/minimize_css.pl www-data

CSS-Minimizer Javascript-Minimizer

Das eigentliche Script zum komprimieren der Dateien ist sehr leicht zu verstehen, es wird bei Bedarf von mir ausgeführt. Einfach das Ursprungsverzeichnis und das Zeilverzeichnis konfigurieren und gut ist.

$inpath     =  '/var/www/www.domain.de/css_raw';
$outpath    =  '/var/www/domain.de/css';

opendir(DIR,$inpath) || die "$inpath: $!";
my @Dateien = readdir(DIR);
closedir(DIR);

foreach(@Dateien) {
   if($_ =~ /.+\.css/) {

          use CSS::Minifier qw(minify);
                open(INFILE, '< '.$inpath.'/'.$_) or die('Fehler beim oeffnen der css-files');                 open(OUTFILE, '> '.$outpath.'/'.$_) or die('Fehler beim erstellen der css-files');

                minify(input => *INFILE, outfile => *OUTFILE);
                close(INFILE);
                close(OUTFILE);
   }
}

Lediglich die erste Installation des Perl-Scripts oder eines Perl-Scripts allgemein, war für mich etwas neues. Das Verzeichnis habe ich nach /usr/scripting/CSS-Minifer/ bzw. /usr/scripting/CSS-Minifer/minimize_css.pl kopiert.
Hier kurz die Schritte zum Generieren der .pl-Datei und der Installation:

root@server01:/usr/scripting/CSS-Minifer$  perl Makefile.PL
......Writing Makefile for CSS::Minifier

root@server01:/usr/scripting/CSS-Minifer$  make

root@server01:/usr/scripting/CSS-Minifer$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/CSS-Minifier.t .. ok
All tests successful.
Files=1, Tests=4,  0 wallclock secs ( 0.03 usr  0.00 sys +  0.06 cusr  0.00 csys =  0.09 CPU)
Result: PASS

root@server01:/usr/scripting/CSS-Minifer$ make install
Installing /usr/local/share/perl/5.10.1/CSS/Minifier.pm
Installing /usr/local/man/man3/CSS::Minifier.3pm
Appending installation info to /usr/local/lib/perl/5.10.1/perllocal.pod

Soweit der Abschnitt zum Perl. Jetzt noch die Pfade anpassen in der minimize.pl-Datei anpassen, die Datei selbst für das Linux System ausführbar machen und einen Testlauf machen:

root@server01: nano /usr/scripting/minimize_css.pl
root@server01: chmod +x /usr/scripting/minimize_css.pl
root@server01: /usr/scripting/minimize_css.pl

In meinem Fall gab es nun noch ein paar Probleme mit den Benutzerrechten, der Zielordner gehörte ja www-data und das Perl-Script konnte die komprimierten CSS- und Javascript-Dateien nicht in den Zielordner kopieren. Dies löste ich, indem ich das Script/Programm einfach als anderer Benutzer ausführte (in meinem Fall www-data).

[download link="http://www.devilweb.de/wp-content/uploads/2011/03/js_minimizer.zip" smalltext="js_minimizer.zip 24 kB"]Download JS-Minimizer[/download]
[download link="http://www.devilweb.de/wp-content/uploads/2011/03/css_minimizer.zip" smalltext="css_minimizer.zip 24 kB"]Download CSS-Minimizer[/download]

Ein letzter Patch für OpenSuse, Kinder wie die Zeit vergeht

green-open-suse-wallpapers_10118_1280x800[1]
openSuse Logo

openSuse Logo

Der letzt Patch war am 23. Juli 2010 erschienen und war definitiv der letzte für OpenSuse Linux 11.0, welche im Juni 2008 veröffentlicht wurde (Quelle: golem.de). Daran merke ich immer wie schnell die Zeit vergeht. Ich erinnere mich noch ganz genau daran, wie ich die DVD ins Laufwerk knerte und die 11er Version testete….

Links zu OpenSuse
[toggle show="show"]http://de.wikipedia.org/wiki/OpenSUSE

http://de.opensuse.org

http://www.linux-club.de/

[/toggle]

Ein paar Wallpaper mit Linux als Thema

ubuntu_sexy_wallpaper

Da ich nun auch auf meinem eeePc endlich wieder einen Desktop habe, wollte ich mir doch auch gleich mal ein schönes Wallpaper holen, ein paar Links:

Wallpaper nvidia ubuntu girlubuntu heroes wallpaperubuntu bubbles wallpaperoffizielle ArtworksNature Ubuntu Grass WallpaperDie guten alten heise linuxmotive

Aufbau & Funktion von Cron-Tab & Cron-Jobs

Beim Lesen des Artikel von www.lpi-certification.de habe ich mich entschlossen, einen kurzen Artikel zu schreiben, da ich das immer wieder nachschlagen muss.

Aufbau der cron-Tabellen

cron-Tabellen bestehen aus beliebig vielen Zeilen. Kommentare werden durch # in Spalte eins eingeleitet. Sie gelten bis zum Zeilenende. Leerzeilen werden ignoriert.

Nach der Deklaration lokaler Variablen folgt die eigentliche Tabelle. Diese besteht aus sieben Spalten pro Zeile. Die ersten fünf Spalten spezifizieren den Ausfügrungszeitpunkt. Die sechte Spalte enthält den Namen des Users, unter dessen Account der Dienst ausgeführt wird. Der Rest wird als siebte Spalte interpretiert und enthält die auszuführenden Befehle.

Die Terminfelder

Das erste Feld beinhaltet die Minute, das zweite die Stunde, das dritte den Tag, das vierte den Monat.  dow steht für den Wochentag (day of the week).

Innerhalb der Terminfelder können die Angaben als Zahlen (im Feld month und dow auch über die englischen Namen) erfolgen. Mehrere Einzeleinträge sind möglich. Sie werden durch Kommata getrennt. Auch Bereiche können angegeben werden. 2,3,4,6 kann auch als 2-4,6 angegeben werden. Das *-Zeichen wird als Joker eingesetzt, das den Bereich ersetzen kann (<erstes Element>-<letztes Element>). Die Felder werden durch ein TAB voneinander getrennt.

Beispiele einer cron-Tabelle

Beispiel einer Crontab:

#minute hour    mday    month   wday    who     command
# Kommentar jede Minute ausführen:
*       *       *       *       *       root    sh /volume1/pfad/script.sh

# Jeden Tag um 22:00 h ausführen:
0       22      *       *       *       root    sh /volume1/dpfad/sript2.pl

# Jeden Sa. um 23:00 h ausführen:
0       23      *       *       6       root    sh /volume1/pfad/script3.sh

# Alle 5 min ausführen:
*/5     *       *       *       *       root    sh /volume1/pfad/script4.pl

# Alle 2 Std. ausführen:
00      */2     *       *       *       root    sh /volume1/pfad/script5.sh

# Von Mo. bis Fr. um 01:00 Uhr ausführen
0       1       *       *       1-5     root    sh /volume1/pfad/script6.pl
Der Aufbau ist also wie folgt zu verstehen:
 * * * * * auszuführender Befehl
 ┬ ┬ ┬ ┬ ┬
 │ │ │ │ │
 │ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7)
 │ │ │ └────── Monat (1-12)
 │ │ └──────── Tag (1-31)
 │ └────────── Stunde (0-23)
 └──────────── Minute (0-59)

Ich meine mich zu erinnern, dass es systemabhängige Unterschiede gibt, was Tabulator bzw. Leerzeichen zwischen den Feldern angeht. In jedem Fall aber ist dies ein Unterschied.

Dateien unter Linux zwischen 2 Rechner mit SSH kopieren

tux-2

Um Dateien von einem Rechner zum anderen zu kopieren, kann man einfach FTP benutzen, was aber gerade bei entfernten Servern zum einen nicht sonderlich sicher und zum anderen nicht möglich (weil kein FTP verfügbar) ist. Eines ist aber sicherlich verfügbar – SSH!

Also dann eben per SSH…

der Befehl: SCP

scp datei  benutzer@maschiene:/ziel/verzeichnis/dateiname

Voilà – passwortphrase beantworten und Kopierfortschritt ansehen und freuen :-D

Packen und Endpacken mit dem Befehl *tar

Zum Anfertigen von Backups ist es unerlässlich und für einen Linuxuser ein Standardwerkzeug. Das “.tar”-Archiv:

Die oder besser gesagt eine Syntax für ein tar (anfertigen:)linux-icon

tar -cvzf file.tar.gz inputfile1 inputfile2

Die entsprechende Syntax um das tar (zu entpacken:)

tar -xvzf file.tar.gz

Die Optionen für tar / gzip im Detail:

literal, locale, shell, shell-always, c, escape

-r, –reverse reverse order while sorting

-R, –recursive list subdirectories recursively

-s, –size (with -l, print size of each file, in blocks)

-S  (sort by file size)

–sort=WORD   (extension -X, none -U, size -S, time -t,)

version -v, status -c, time -t, atime -u,

access -u, use -u

–time=WORD            with -l, show time as WORD instead of modification

time: atime, access, use, ctime or status; use

specified time as sort key if –sort=time

–time-style=STYLE     with -l, show times using style STYLE:

full-iso, long-iso, iso, locale, +FORMAT.

FORMAT is interpreted like `date’; if FORMAT is

FORMAT1<newline>FORMAT2, FORMAT1 applies to

non-recent files and FORMAT2 to recent files;

if STYLE is prefixed with `posix-’, STYLE

takes effect only outside the POSIX locale

-t                         sort by modification time

-T, –tabsize=COLS         assume tab stops at each COLS instead of 8

-u                         with -lt: sort by, and show, access time

with -l: show access time and sort by name

otherwise: sort by access time

-U                         do not sort; list entries in directory order

-v                         sort by version

-w, –width=COLS           assume screen width instead of current value

-x                         list entries by lines instead of by columns

-X                         sort alphabetically by entry extension

-1                         list one file per line