ZimaOS Premium Snapshot Script

ZimaOS Premium Snapshot Script V-1

A clean and noise-free diagnostic snapshot for ZimaOS systems.

This script generates a clear and readable system report with only the important values. It is designed to help users collect accurate details when reporting issues. The output includes system details, CPU and RAM status, temperatures, disk usage, RAID summary, SMART health, Docker activity, network configuration, and top processes. Everything is formatted for clarity without unnecessary characters or kernel noise.

This makes troubleshooting easier for both the user and support.


What this snapshot provides

The snapshot includes:

  • System information (model, variant, build date)
  • CPU load, RAM usage, temperatures
  • Disk usage for system and data drives
  • RAID status and Btrfs usage
  • SMART health for each disk
  • Active Docker containers
  • AppData disk usage overview
  • Clean IPv4 network summary with routes
  • Top CPU and memory processes
  • Automatic save to Main-Storage

How to install the snapshot script

Run the following commands:

mkdir -p /media/Main-Storage/Zima_snapshot
nano /DATA/zima_snapshot.sh

Paste the full script below into nano, save, and exit.

Make it executable:

chmod +x /DATA/zima_snapshot.sh

How to generate a snapshot

Run:

/DATA/zima_snapshot.sh

The report will be saved here:

/media/Main-Storage/Zima_snapshot/

Example filename:

zimaos_premium_clean_2025-11-14_09-38.txt

Full Premium Snapshot Script

Paste this into /DATA/zima_snapshot.sh

#!/bin/bash

OUTDIR="/media/Main-Storage/Zima_snapshot"
DATE=$(date +"%Y-%m-%d_%H-%M")
OUTFILE="$OUTDIR/zimaos_premium_clean_$DATE.txt"

mkdir -p "$OUTDIR"

{
echo "============================================="
echo "          ZIMAOS PREMIUM SNAPSHOT"
echo "              (Noise-Free)"
echo "============================================="
echo "Generated: $(date)"
echo

echo "========== SYSTEM =========="
hostnamectl | grep -E 'Static|Operating|Kernel' || true
echo
cat /etc/os-release | grep -E 'NAME=|VERSION=|PRETTY|VARIANT|BUILD_DATE|MANUFACTURER|MODEL'
echo

echo "========== CPU / RAM / LOAD =========="
uptime
echo
free -h
echo

echo "CPU Temperatures:"
sensors 2>/dev/null | grep -E 'Package|Core' || echo "No temperature data available"
echo

echo "========== DISK USAGE =========="
df -h --output=source,size,used,avail,pcent,target | grep -E 'nvme|md0|sdd'
echo

echo "========== FS LAYOUT (CLEAN) =========="
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT | grep -E 'sd|nvme'
echo

echo "========== SMART HEALTH (CLEAN) =========="
for disk in /dev/sda /dev/sdb /dev/sdc /dev/sdd; do
  echo "$disk:"
  smartctl -H -A "$disk" 2>/dev/null | grep -E 'overall-health|Temperature_Celsius|Power_On_Hours|Reallocated_Sector|Current_Pending_Sector|UDMA_CRC_Error' || echo "SMART unavailable"
  echo
done

echo "/dev/nvme0n1:"
smartctl -H -A /dev/nvme0n1 2>/dev/null | grep -E 'temperature|power_on_hours|critical_warning' || echo "SMART not available for /dev/nvme0n1"
echo
echo "/dev/nvme1n1:"
smartctl -H -A /dev/nvme1n1 2>/dev/null | grep -E 'temperature|power_on_hours|critical_warning' || echo "SMART not available for /dev/nvme1n1"
echo

echo "========== RAID STATUS (md0) =========="
mdadm --detail /dev/md0 2>/dev/null | grep -E 'Raid Level|Array Size|Raid Devices|State|Active Devices|Failed Devices'
echo
btrfs filesystem usage /media/Main-Storage 2>/dev/null | grep -E 'Data|System|Metadata|Global'
echo

echo "========== DOCKER CONTAINERS =========="
docker ps -a --format "{{.Image}}  ({{.Status}}) -> {{.Names}}"
echo

echo "========== DIRECTORY DISK USAGE =========="
du -sh /DATA/AppData/* 2>/dev/null
echo
du -sh /media/Main-Storage/* 2>/dev/null
echo

echo "========== NETWORK =========="
ip -4 addr show | grep -E 'inet ' | awk '{print $2, $NF}'
echo
ip route show
echo

echo "========== TOP CPU PROCESSES =========="
ps -eo cmd,%cpu,%mem --sort=-%cpu | head -n 10
echo

echo "========== TOP MEMORY PROCESSES =========="
ps -eo cmd,%mem,%cpu --sort=-%mem | head -n 10
echo

echo "========== SUMMARY =========="
echo "Snapshot Complete (Noise-Free)"
echo " - System Info"
echo " - CPU, RAM, Load, Temps"
echo " - Disk Usage, FS Layout"
echo " - SMART Health Summary"
echo " - RAID5 Status + Btrfs usage"
echo " - Docker Containers"
echo " - Directory Usage"
echo " - Network Overview"
echo " - Top Resource Processes"
echo
echo "Saved to: $OUTFILE"

} > "$OUTFILE"

If you feel there’s anything useful we should add to ZimaOS Premium Snapshot Script V-1, please let me know and I’m happy to update it. The goal is to keep improving this tool so it becomes a simple, one-command way to collect all important system information for troubleshooting.

1 Like

Output:

==============================================
ZIMAOS PREMIUM SNAPSHOT
(Noise-Free)

Generated: Fri Nov 14 09:38:13 AM GMT 2025

========== SYSTEM ==========
Hostname: ZimaOS

Linux 6.12.25 x86_64 GNU/Linux

NAME=“ZimaOS”
VERSION=“v1.5.1”
PRETTY_NAME=“ZimaOS v1.5.1”
VARIANT=“ZimaOS ZimaCube”
VARIANT_ID=zimacube
BUILD_DATE=“2025/11/04 12:21:01 UTC”
MANUFACTURER=“IceWhale Technology”
MODEL=ZimaCube

========== CPU / RAM / LOAD ==========
Uptime and Load:
09:38:13 up 8 days, 22:16, 0 users, load average: 1.21, 1.19, 1.18

Memory:
total used free shared buff/cache available
Mem: 11Gi 2.4Gi 250Mi 38Mi 9.1Gi 9.0Gi
Swap: 3.8Gi 256Ki 3.8Gi

CPU Temperatures:
Package id 0: +50.0 C (high = +105.0 C, crit = +105.0 C)
Core 0: +50.0 C (high = +105.0 C, crit = +105.0 C)
Core 1: +50.0 C (high = +105.0 C, crit = +105.0 C)
Core 2: +50.0 C (high = +105.0 C, crit = +105.0 C)
Core 3: +50.0 C (high = +105.0 C, crit = +105.0 C)

========== DISK USAGE ==========
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p1 32M 732K 32M 3% /mnt/boot
/dev/nvme0n1p8 904G 103G 802G 12% /DATA
/dev/md0 7.3T 5.9M 7.3T 1% /media/Main-Storage
/dev/sdd 3.6T 66G 3.6T 2% /media/HDD-Storage

========== FS LAYOUT (CLEAN) ==========
NAME SIZE TYPE FSTYPE MOUNTPOINT
sda 3.6T disk linux_raid_member
└─md0 7.3T raid5 btrfs /var/lib/casaos_data/.media/Main-Storage
sdb 3.6T disk linux_raid_member
└─md0 7.3T raid5 btrfs /var/lib/casaos_data/.media/Main-Storage
sdc 3.6T disk linux_raid_member
└─md0 7.3T raid5 btrfs /var/lib/casaos_data/.media/Main-Storage
sdd 3.6T disk ext4 /var/lib/casaos_data/.media/HDD-Storage
nvme0n1 931.5G disk
├─nvme0n1p1 32M part vfat /mnt/boot
└─nvme0n1p8 919.3G part ext4 /DATA
nvme1n1 931.5G disk ext4

========== SMART HEALTH (CLEAN) ==========
/dev/sda:
Health: PASSED
Temperature: 34 °C
Power-On Hours: 16754 h
Reallocated: 0 sectors
Pending: 0 sectors
CRC Errors: 0

/dev/sdb:
Health: PASSED
Temperature: 35 °C
Power-On Hours: 16374 h
Reallocated: 0 sectors
Pending: 0 sectors
CRC Errors: 0

/dev/sdc:
Health: PASSED
Temperature: 34 °C
Power-On Hours: 17340 h
Reallocated: 0 sectors
Pending: 0 sectors
CRC Errors: 0

/dev/sdd:
Health: PASSED
Temperature: 33 °C
Power-On Hours: 7092 h
Reallocated: 0 sectors
Pending: 0 sectors
CRC Errors: 0

/dev/nvme0n1:
SMART not available for /dev/nvme0n1
/dev/nvme1n1:
SMART not available for /dev/nvme1n1
========== RAID STATUS (md0) ==========
Raid Level : raid5
Array Size : 7813772288 (7.28 TiB 8.00 TB)
Raid Devices : 3
State : clean
Active Devices : 3
Failed Devices : 0

Btrfs usage on Main-Storage:
Data, single: total=8.00MiB, used=36.00KiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=1.00GiB, used=128.00KiB
GlobalReserve, single: total=5.50MiB, used=0.00B

========== DOCKER CONTAINERS ==========
nginx:alpine (Exited (1) 5 days ago) → invoiceninja-web
invoiceninja/invoiceninja:5.10.52 (Exited (1) 5 days ago) → invoiceninja-app
mariadb:10.6 (Up 5 days) → invoiceninja-db
cp0204/ttydbridge:v0.0.3 (Up 8 days) → ttydbridge

========== DOCKER VOLUMES ==========

========== DIRECTORY DISK USAGE ==========
/DATA/AppData:
354M /DATA/AppData/invoiceninja
87M /DATA/AppData/.search
38M /DATA/AppData/.models
478M /DATA/AppData

/media/Main-Storage:
0 /media/Main-Storage/.trash
40K /media/Main-Storage/Zima_snapshot
56K /media/Main-Storage

========== NETWORK ==========
Interfaces (IPv4):
lo: 127.0.0.1/8
eth0: 192.XXX.X.3/24
virbr0: 192.XXX.122.1/24
ztivryh7zv: 172.22.0.1/16
docker0: 172.17.0.1/16
br-7751b17256f5: 172.18.0.1/16

Default Route:
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.3 metric 100

Docker and Virtual Bridges:
ztivryh7zv: 172.22.0.1/16
docker0: 172.17.0.1/16
br-7751b17256f5: 172.18.0.1/16

========== TOP CPU PROCESSES ==========
CMD %CPU %MEM
/bin/bash /DATA/zima_snapsh 2.5 0.0
/usr/bin/zimaos-search 1.4 8.5
[kworker/1:2+pm] 1.2 0.0
[kworker/2:1-events] 1.1 0.0
[kworker/0:1-kacpi_notify] 1.0 0.0
[kworker/3:1-events] 0.8 0.0
[kworker/3:2-events] 0.8 0.0
/usr/bin/zimaos -c /etc/cas 0.6 0.4
[irq/9-acpi] 0.6 0.0

========== TOP MEMORY PROCESSES ==========
CMD %MEM %CPU
/usr/bin/zimaos-search 8.5 1.4
/usr/lib/systemd/systemd-jo 1.7 0.0
/usr/bin/rclone rcd --rc-ad 0.8 0.0
/usr/bin/zimaos-app-managem 0.8 0.3
mariadbd --character-set-se 0.6 0.0
/usr/bin/dockerd --host=fd: 0.6 0.0
/usr/bin/icewhale-files 0.6 0.5
/usr/bin/zimaos-gateway 0.4 0.4
/usr/bin/zimaos -c /etc/cas 0.4 0.6

========== SUMMARY ==========
Snapshot Complete (Noise-Free)

  • System Info
  • CPU, RAM, Load, Temps
  • Disk Usage, FS Layout
  • SMART Health (clean per-disk summary)
  • RAID5 Status + Btrfs usage
  • Docker Containers + Volumes
  • Directory Usage (AppData + Main-Storage)
  • Network (IPv4 + routes + bridges)
  • Top CPU and Memory Processes (no PIDs)

Saved to: /media/Main-Storage/Zima_snapshot/zimaos_premium_clean_2025-11-14_09-38.txt

2 Likes

This is actually awesome! I think it will definitely help the users AND the Icewhale team in diagnosing/identifying most issues very quickly!

1 Like

Thank you for sharing, this is really awesome. Are there any plans to incorporate such a thing in ZimaOS too?

Perhaps a “export diagnostics report” button under advanced options in gear settings menu, that could come in handy by instruct users to attach those here on their threads to facilitate support.

Most vendors have a similar approach to that (eg. Cisco’s show tech-support) in order to speed up identifying issues without having the user describe complex problems with poor words.

1 Like

Thanks for the kind words, really appreciate it.

I created this snapshot specifically to help both users and support resolve issues more quickly. When everyone is looking at the same clean system report, the troubleshooting becomes far easier and we avoid a lot of guesswork.

I believe something like this would be extremely valuable inside ZimaOS itself. An “Export Diagnostics Report” button under the Advanced settings would make things much easier for everyone. Instead of trying to explain complex issues, users could simply attach a snapshot and support can jump straight to the root cause.

I suggest raising this with IceWhale; they’ve been very receptive to practical ideas like this, especially when it improves the support flow. If the team is interested, I’m happy to update or extend the snapshot further so it aligns with whatever structure they prefer.

2 Likes

Great work!

Whats with the „premium“ naming?

Absolutely, “premium” just refers to quality, not cost.

It’s meant in the sense of: a higher-quality, cleaner, more readable snapshot within a range of possible outputs. And of course, it’s completely free, I just used the word because I worked hard to remove all the noise and leave only meaningful system information.

Imo, „premium“ is confusing, indicating that there are „other / less-premium“ scripts available…

I get the concern, but “premium” here simply refers to the quality of the formatting, clean, noise-free, and actually readable. There’s no paid tier, no upgrade, and no “basic” script sitting somewhere else.
If the wording causes confusion, I can rename it, the goal is to help the community, not create levels. The value is in the output, not the title.

I am 10000% on your preferences and absolutely am a fan of such approach (noise-free, readable,
clean)!

You know what? Since YOU put extra time on it and even beside community purpose, you definitely SHOULD give the naming a „trademark“ to make it recognizable. I think „gbd‘s System Report Script“ would be great!

What if I had to use sudo to do the mkdir? I assume there is no Main-Storage until made by the mkdir. Actually even the nano has to be ran by sudo

anyway, quick question, is every machine runnining ZimaOS considered a zimacube?

Static hostname: ZimaWTR
Operating System: ZimaOS v1.5.1
Kernel: Linux 6.12.25

NAME=“ZimaOS”
VERSION=“v1.5.1”
PRETTY_NAME=“ZimaOS v1.5.1”
CPE_NAME=cpe:2.3:o:icewhale:zimaos:1.5.1::development::::zimacube:*
VARIANT=“ZimaOS ZimaCube”
VARIANT_ID=zimacube
BUILD_DATE=“2025/11/04 12:21:01 UTC”
MANUFACTURER=“IceWhale Technology”
MODEL=ZimaCube

Excellent work!

If there’s going to be continuous iteration, I might suggest storing the output files in the /DATA directory, as this directory is easier to access using the Files App.

1 Like