SurviveTh3Dead

Arma 2 DayZ mod, survival servers, and the people who ran them

Log Retention I Never Set Deleted 23 Game Server Logs in One Command

The DayZ box sat switched off for two months. CT 161 gamelab is an unprivileged LXC on Proxmox, Debian 12, running a DayZ dedicated server under LinuxGSM v26.2.0 as user dayzserver. Its apt timers reported their last run as Sat 2026-08-15 — “2 months 0 days ago” — when I started it on 2026-10-15. I ran ./dayzserver check-update at 14:24. The first thing it did after querying the public IP was remove 23 log files in about 0.12 seconds.

Among them was dayzserver-console.log, the console log of the most recent session, 747,325 bytes, last written 2026-08-13 22:30. The script log records the deletion because the running command was appending to dayzserver-script.log, the only script log it didn’t remove. Its lines show CHECK-UPDATE: INFO: Removing logs older than 7 days followed by the 23 paths, ending with CHECK-UPDATE: Removed 23 log files at 14:24:50.898. The update check itself then failed because the Steam login had expired, but by then the logs were gone.

LinuxGSM's own script log listing the 23 log files it removed during check-update
The first command after two months off. It removed 23 log files before doing what it was asked to do, and then failed at that.

The rule

The seven-day threshold lives in lgsm/config-lgsm/dayzserver/_default.cfg, line 135: logdays="7". It’s not set in dayzserver.cfg or common.cfg, the files you’re meant to edit. I never set it; it’s the shipped default.

$ grep -n 'logdays' lgsm/config-lgsm/dayzserver/_default.cfg lgsm/config-lgsm/dayzserver/dayzserver.cfg lgsm/config-lgsm/dayzserver/common.cfg
lgsm/config-lgsm/dayzserver/_default.cfg:135:logdays="7"

Age is measured by find -mtime +7: file modification time. A stopped server writes nothing, so every log ages past the line whether or not the server ran in those weeks. The cleanup runs from command_start.sh at line 190 and command_check_update.sh at line 15.

$ sed -n '53,55p;63,67p' lgsm/modules/core_logs.sh
	find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
	scriptcount=$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
	find "${lgsmlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
	if [ "${consolelog}" ]; then
		find "${consolelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
		consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}" | wc -l)
		find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
	fi

The same module has a separate block for the game’s own log directory, guarded by if [ "${engine}" == "unreal2" ] || [ "${engine}" == "source" ]. DayZ is neither, so that block never runs.

logdays=7 in _default.cfg only, the two commands that call the cleanup, and the find -mtime lines that delete
A retention policy I never set, enforced by file age, on a server that had not run for weeks.

What survived

LinuxGSM’s cleanup does not touch the game’s own profile directory for this engine. ~/.local/share/DayZ held 17 crash and RPT files — five crash logs and twelve RPT files — and the whole directory came to 17M.

$ cd ~/.local/share/DayZ && ls crash_*.log *.RPT | wc -l; ls -l --time-style=long-iso crash_*.log; du -sh .
17
-rw-r--r-- 1 dayzserver dayzserver   476 2026-08-09 16:48 crash_2026-08-09_16-47-41.log
-rw-r--r-- 1 dayzserver dayzserver 26174 2026-08-09 17:08 crash_2026-08-09_17-07-40.log
-rw-r--r-- 1 dayzserver dayzserver 24712 2026-08-09 17:18 crash_2026-08-09_17-17-07.log
-rw-r--r-- 1 dayzserver dayzserver 10294 2026-08-13 21:21 crash_2026-08-13_21-03-21.log
-rw-r--r-- 1 dayzserver dayzserver 26174 2026-08-13 22:23 crash_2026-08-13_22-22-39.log
17M	.

The 26,174-byte crash log from 2026-08-09 is the one diagnosed in the earlier crash article. The distinction between the LinuxGSM estate and the game’s own profile directory was mapped earlier in the three log estates on one server. Nothing in this directory is ever cleaned up by anything; it just grows. Two estates, two opposite retention policies on one box, and neither was chosen.

The game's own profile directory with all five crash logs still present, 17M in total
The game’s own logs, in a directory the tool does not manage, were never touched.

The backup had them

Proxmox backs up CT 161 weekly with keep-last=3. The Sunday 2026-10-11 backup ran before I started the server, while the box was stopped and all 23 files still existed. Listing the LinuxGSM log directories inside the archive took 1 minute 5.936 seconds, because the archive is a single 6,417,079,947-byte zstd stream of the whole 60 GB container.

$ time (zstd -dc /DataHDD500G1/backup/dump/vzdump-lxc-161-2026_10_11-02_20_18.tar.zst | tar -tvf - --wildcards "./home/dayzserver/log/*")
...
-rw-r--r-- 1001/1001    747325 2026-08-13 22:30 ./home/dayzserver/log/console/dayzserver-console.log
-rw-r--r-- 1001/1001   2388753 2026-08-09 17:26 ./home/dayzserver/log/console/dayzserver-console-2026-08-13-21:03:07.log
-rw-r--r-- 1001/1001    726227 2026-08-09 17:16 ./home/dayzserver/log/console/dayzserver-console-2026-08-09-17:16:56.log
real	1m5.936s

Every one of the 23 deleted files is in the archive with its original size and date. The archive also holds dayzserver-script.log at 932 bytes — the one script log that was not deleted. The backup kept for three weeks what the log tool kept for seven days, but only because the files happened to still exist on the Sunday the backup ran. A box that is backed up weekly and cleaned up on start can lose logs the backup never saw.

Listing the LinuxGSM log directories inside Sunday's backup archive of the game server, every deleted file present
Every deleted file was still in Sunday’s backup. Finding them meant decompressing the whole container.

What this means for log management software

Retention is a policy whether or not you set it. LinuxGSM ships one — keep seven days — and it measures age by file modification time. A server that is switched off for two months loses its entire log history the moment it is started again, or even just checked for updates. If a log matters, it needs to live somewhere that doesn’t belong to the tool that writes it. In August I forwarded these logs to the collector I built, but that was a disposable lab box, destroyed on 2026-08-13 once its captures were taken, so in October the backup was the only other copy.