A GemStone/S 64 Bit system needs to have various maintenance tasks performed regularly. One of these is managing log file, backups, and transaction logs. I recently put together a basic Linux VM that has GemStone/S 64 Bit installed, but little more (the last link here). One of the non-Smalltalk things that I sometimes struggle with is figuring out which file can be deleted. The following demonstrates some bash scripting that seems to address a few of my questions. It starts by deleting all but the most recent two log files for pcmon, pagemanager, and symbolgem. It then does some garbage collection activity and a full backup. It then deletes all but the most recent two backups. Finally, if there are two backups in the last two days, it deletes all transaction logs more than two days old. This does not do as much error checking as should be done in a serious production environment (such as try restoring the backup, apply transaction logs, etc., before deleting things), but it demonstrates some of the things that can be done in bash to do date-specific cleanup.
#!/bin/bash # cleanup log files cd /opt/gemstone/log (ls -t *pcmon.log | head -n 2; ls *pcmon.log) | \ sort | uniq -u | xargs rm (ls -t *pagemanager.log | head -n 2; ls *pagemanager.log) | \ sort | uniq -u | xargs rm (ls -t *symbolgem.log | head -n 2; ls *symbolgem.log) | \ sort | uniq -u | xargs rm # do backup topaz -l -T 50000 << EOF output push backup.out errorCount send SystemRepository markForCollection send SystemRepository reclaimAll send SystemRepository startNewLog run SystemRepository fullBackupCompressedTo: '/opt/gemstone/backups/backup-' , (DateTime now asSeconds // 60) printString. % logout errorCount exit EOF # cleanup backups cd /opt/gemstone/backups (ls -t backup* | head -n 2; ls backup*) | sort | uniq -u | xargs rm if [ "2" -le "`find . -mtime -2 -name 'backup*' | wc -l`" ]; then cd /opt/gemstone/data find . -mtime +2 -name 'tranlog*' | xargs rm fi