Мы можем упростить это до одного цикл, просто передав все имена файлов за один раз:
#!/bin/bash
for file in /Users/Connor/Documents/GitHub/WhatThePDF/dat/{forms,data,maps,none}/*.pdf
do
echo "${file}"
destfile="${file/.pdf/_source.txt}"
echo "${destfile}"
qpdf --qdf --object-streams=disable "${file}" "${destfile}"
done
Для удобства чтения мы можем немного разделить его
например cd
в каталог и прервать его, если он не удастся:
#!/bin/bash
cd /Users/Connor/Documents/GitHub/WhatThePDF/dat || exit 255
for file in {forms,data,maps,none}/*.pdf
do
echo "${file}"
destfile="${file/.pdf/_source.txt}"
echo "${destfile}"
qpdf --qdf --object-streams=disable "${file}" "${destfile}"
done
Первое, что вам нужно сделать, это выяснить, где в вашей системе находятся файлы runit. Обычно это /etc/runit/
. Там вы найдете каталог с именем sv
, в котором создается один каталог для каждой службы.
Допустим, вы хотите создать новую службу с именем food
. Вы должны создать каталог с именем food
в /etc/runit/sv/
.
# mkdir /etc/runit/sv/food
Создайте скрипт run
в /etc/runit/sv/food
. Предположим, что программа вашего сервиса является исполняемым файлом с адресом /opt/bin/foo
. В этом случае ваш скрипт run
будет таким.
#!/bin/sh
exec /opt/bin/foo 2>&1
Для ведения журнала вы должны создать еще один каталог в /etc/runit/sv/food
с именем log
. А в нем еще один run
скрипт.
#!/bin/sh
exec svlogd -tt <logs-directory>
Убедитесь, что <logs-directory>
выходит. И не забудьте сделать оба run
скрипта исполняемыми.
# chmod +x /etc/runit/sv/food/run
# chmod +x /etc/runit/sv/food/log/run
Создайте символическую ссылку на ваш каталог food
внутри/etc/runit/runsvdir/default
# ln -s /etc/runit/sv/food /etc/runit/runsvdir/default/
Чтобы вручную запустить/остановить службу, просто запустите:
# sv start food
# sv stop food
Ознакомьтесь с этим кратким руководством для получения дополнительной информации.
Обратите внимание, что в отличие от руководства я не использовал chpst
в своем примере. В этом случае служба food
будет работать как root
. Используйте chpst
, как предлагается в руководстве, если вы хотите, чтобы ваша служба работала от имени конкретного пользователя.