im ubuntu users wiki ist eine schöne knappe erklärung zu crontab:
Kategorie: Server
um mit dem squidclient veraltete dateien aus dem cache zu entfernen, geht man wie folgt vor:
user@server:/www$ squidclient -m PURGE http://www.example.com/js/javascript.js
howto setup ramfs und tmpfs
um schnelle dateizugriffe für caches zu realisieren, ist es angebracht diese dateistruktur im ram des rechners zu erzeugen. tmpfs und ramfs benutzen jeweils den ram des rechners und unterscheiden sich folgendermaßen:
tmpfs wächst nicht dynamisch, sondern hält immer die grösse mit der es angelegt wurde.
tmpfs benutzt den swap bereich bei überladung.
ramfs wächst dynamisch und kann sämtlichen speicher aufbrauchen.
ramfs benutzt keinen swap.
# mkdir -p /mnt/tmpcache # mount -t tmpfs -o size=100m tmpfs /mnt/tmpcache # mkdir -p /mnt/ramcache # mount -t ramfs -o size=100m ramfs /mnt/ramcache
der befehl mount zeigt alle derzeit gemounteten dateisysteme.
die auslastung kann mittels df -k angezeigt werden
# df -k tmpcache/ Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 102400 1588 100812 2% /mnt/tmpcache # mount ... tmpfs on /mnt/tmpcache type tmpfs (rw,size=100m) ramfs on /mnt/ramcache type ramfs (rw,size=100m)
um diese ordner permanent zu mounten (auch nach systemstart) muss ein eintrag in die /etc/fstab geschrieben werden.
Branch erzeugen
dev@server:~/project> svn cp https://svn.example.com:88/svn/project/trunk https://svn.example.com:88/svn/project/branches/[BRANCH_NAME]
Branch aktuell halten
Es sollte immer in kurzen Abständen der Trunk in den Branch überführt werden, damit es bei späterem Zurückführen keine größeren Konflikte gibt. Mit –dry-run kann man vorher testen was bei merge passieren würde.
dev@server:~/project/branches/[BRANCH_NAME]> svn up dev@server:~/project/branches/[BRANCH_NAME]> svn merge --dry-run https://svn.example.com:88/svn/project/trunk dev@server:~/project/branches/[BRANCH_NAME]> svn merge https://svn.example.com:88/svn/project/trunk
Branch in den Trunk zurückführen
Mit –dry-run kann man vorher testen was bei merge –reintegrate passieren würde.
dev@server:~/project/trunk> svn merge --dry-run --reintegrate https://svn.example.com:88/svn/project/branches/[BRANCH_NAME] dev@server:~/project/trunk> svn merge --reintegrate https://svn.example.com:88/svn/project/branches/[BRANCH_NAME]
um mit ant einen gezipten mysqldump zu erstellen, gehe wie folgt vor
<target name="tstamp" description="create timestamp for further usage"> <echo message="create timestamp for further usage"/> <tstamp/> </target> <target name="mkdir" description="create backup directory"> <echo message="create backup directory"/> <mkdir dir="${backups}"/> </target> <target name="dump" description="create db dump and gzip it - depends on tstamp, mkdir" depends="tstamp, mkdir"> <echo message="create db dump and gzip it"/> <exec executable="bash" dir="${backups}"> <arg value="-c"/> <arg line='"mysqldump ${db} -u${db_user} -p${db_pass} | gzip > ${backups}/${db}_${DSTAMP}_${TSTAMP}.sql.gz"'/> </exec> </target>
nach einigen erfolglosen manipulationsversuchen von exif und iptc daten in images, kam jhead. damit ist es möglich, photoshop und windows metadaten in images zu löschen und eigene, echte metadaten in das image zu schreiben.
einfach die bin an geeignete stelle kopieren, ausführbar machen und bspw. mit php verwenden:
exec('/usr/bin/jhead -purejpg source.jpg target.jpg');
mysqldump ohne definer
um hostunabhängige mysql dumps zu erzeugen, muss man die definer aus dem jeweiligen dump entfernen.
mit sed kann man das gleich beim erzeugen des dumps:
mysqldump database -ufoo -pbar -hlocalhost | sed "s/\/\*[^\/]*DEFINER.*\*\///g" > dump_without_definer.sql
Findet alle Dateien die mit ._ anfangen, ignoriert die .svn eigenen kopien und markiert diese zum löschen via svn.
find . -name '._*' -type f | grep -v '.svn/' | xargs svn rm
trage einfach in die config.inc.php folgendes ans ende der datei:
// am ende der config.inc.php $cfg['ForceSSL'] = true;
# sucht im inhalt der datei nach suchbegriff /suchbegriff # ersetzt im inhalt der datei alt mit neu # slashes und * im patter/replacement müssen escaped werden :%s/alt/neu/g