Один из вариантов — выводить временную метку файла вместе с путем к файлу, сортировать по нему и затем удалять :
.find -type f -name "*.gz" -printf '%C@\t%p\n'|sort -nk1|cut -f2-|xargs zcat
Обратите внимание: если ваши имена файлов могут содержать потенциально небезопасные символы (, такие как пробелы ), просто замените
xargs zcat
с
xargs -d "\n" zcat
и если вам нужно учесть символы новой строки в именах файлов, вы можете использовать нулевой байт для завершения записей, как подробно описано в ответе @stéphane -chazelas (, поскольку на практике это редко является проблемой ).
Если удаленная служба systemd открывает какой-либо порт на удаленном сервере, вы можете проверить, открыт ли этот порт из вашей локальной службы systemd. Используя bash, вы можете написать что-то вроде
while ! echo > /dev/tcp/remoteserver/someport; do
echo "waiting for remote service..."
sleep 5s
done
Конечно, вам нужно указать systemd не запускать эту службу, пока сеть не будет готоваhttps://wiki.archlinux.org/index.php/Systemd#Running_services_after_the_network_is_up
Возможно, что-то вроде ExecStartPre=systemctl --host=service-user@remote-host start remote-service
можно использовать в ExecStartPre локального файла службы.