Вы можете использовать замену процесса[1]:
diff -y output1.txt <(your_program & sleep 1; kill $!)
Если your_program
способен генерировать огромные объемы данных за секунду (, как при тестировании с помощью yes(1)
), то diff
будет очень трудно справиться с этим, и если вы не наложите какие-то осторожные ограничения, на месте это может снести вашу память и повесить вашу машину (и в лучшем случае создаст иллюзию того, что команда какое-то время "зависает" ). Вместо yes
попробуйте скрипт slowyes
, например while echo y; do sleep.01; done
.
Обратите внимание, что замена процесса <(...)
выполняется параллельно ,поэтому diff
не будет ждать завершения, прежде чем начать обработку своих данных.
Я думаю, вам будет лучше остановить your_program
после того, как он сгенерирует некоторое количество строк, а не через некоторое время:
diff -y output1.txt <(your_program | head -n 1000)
В этом случае your_program
должен быть уничтожен SIGPIPE
, как обычно, с левой стороны конвейера. Если ваша программа игнорирует как ошибки SIGPIPE
, так и write(2)
, то, пожалуйста, задайте другой вопрос об этом, либо как это исправить, либо как обойти это.
[1] если ваша оболочка не поддерживает замены процессов (как /bin/sh
в debian, а не bash
), вы также можете использовать конвейер, как в другом ответе
{ your_program & sleep 1; kill $!; } | diff -y output1.txt -
Те же оговорки применимы и к этому случаю.
Обычно существует два способа работы с экземплярами сервисных модулей systemd. Либо используйте файлы в /etc/sysconfig
для каждого экземпляра, которые переопределяют, например. по умолчанию ОПЦИИ переменная(EnvironmentFile
в определении службы загрузит такой файл и заполнит ОПЦИИ , см., например,systemctl show -p ExecStart sshd
)или переопределит дополнительные определения единиц через «перетащите -в» каталог, например. <service>@instance.service.d
.
Кстати, экземпляр ДОЛЖЕН иметь '@', иначе он не будет экземпляром.
Посмотрите, как он используется в сервисных единицах getty
.
$ ls -l /usr/lib/systemd/system/getty@.service
-rw-r--r-- 1 root root 1958 Apr 9 00:22 /usr/lib/systemd/system/getty@.service
$ grep ^ExecStart /usr/lib/systemd/system/getty@.service
ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM
$ systemctl -t service --state running list-units | grep getty
getty@tty1.service loaded active running Getty on tty1