Truncate File
trunc_programs.cfg defines a simple Perl script to truncate files, for example logs and other data files. Many Pikt scripts invoke trunc.pl.
/////////////////////////////////////////////////////////////////////////////// // // trunc_programs.cfg // /////////////////////////////////////////////////////////////////////////////// trunc.pl // truncate a file #!=perl # trunc.pl -- truncate a file die "Usage: trunc.pl <#lines> <file>\n" unless $#ARGV == 1 ; $LINES = $ARGV[0] ; $FILE = $ARGV[1] ; $BAK = "$FILE.bak.gz" ; $TMP = "$FILE.tmp" ; die "no $FILE file!\n" if (! -e $FILE) ; ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime, $mtime,$ctime,$blksize,$blocks) = stat($FILE) ; unlink($BAK) ; system("=gzip -c $FILE > $BAK") ; chown($uid, $gid, $BAK) ; chmod($mode, $BAK) ; system("=tail -$LINES $FILE > $TMP") ; chown($uid, $gid, $TMP) ; chmod($mode, $TMP) ; rename($TMP, $FILE) ; //////////////////////////////////////////////////////////////////////////////
On the piktmaster system, we would install the trunc.pl script to each PIKT slave system with the command:
# piktc -iv +P trunc.pl +H all [or: ... -H down]
For more examples, see Samples.