#!/usr/bin/php -q 'http://localhost/pub/plugins?buffer_length=1', CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket', CURLOPT_POST => 1, CURLOPT_RETURNTRANSFER => true ]); foreach ($messages as $message) { curl_setopt($com, CURLOPT_POSTFIELDS, $message); curl_exec($com); } curl_close($com); } write(_("SSD Trim started").". "._("Please wait")."...\n","\n"); // trim btrfs pools $trim = popen('fstrim -va','r'); while (!feof($trim)) write(fgets($trim)); pclose($trim); write("\n"); // trim zfs pools exec("zpool status|grep -Po 'pool: \K.+'",$zfs_pools); foreach ($zfs_pools as $pool) if ($pool) { unset($devs); exec("zpool trim $pool"); while (true) { sleep(1); $trim = exec("zpool status -t $pool|grep -Pom1 '\d+% trimmed'"); write("/mnt/$pool: $trim\r"); if (substr($trim,0,3)==100) break; } $trim = preg_replace('/(.$)/',' $1',exec("zfs list $pool|grep -Pom1 '^$pool\s+\K\S+'"))."iB"; $bytes = exec("zfs list -p $pool|grep -Pom1 '^$pool\s+\K\d+'"); exec("zpool status -t $pool|grep -Po '^\s+\K.+100%'",$devs); $devs = implode(', ',array_map(function($dev){return "/dev/".strtok($dev,' ');},$devs)); write("/mnt/$pool: $trim ($bytes bytes) trimmed on $devs\r","\n"); } write(_("Finished")."\n",'_DONE_',''); ?>