Команда unzip
имеет свою собственную опцию unzip -Z1 zipfile.zip
для отображения фактического имени сжатого файла в заархивированном файле, который принимает zipinfo's
опцию -1
как zipinfo -1 zipfile.zip
. поэтому вы можете просто сделать, как показано ниже, и нет необходимости создавать временный каталог, и mv
будет выполнено в текущем каталоге.
for z in *.zip; do
unzip "$z";
mv "$(unzip -Z1 $z)" "${z%%.*}.txt";
done
User=someuser
в системной службе определяет системную службу, которая не запускается от имени пользователя root. Системная служба будет работать независимо от входа пользователя в систему; он будет продолжать работать, даже если никто не войдет в систему. Запуск служб на выделенных учетных записях служб, когда это возможно, является хорошей защитой, но иногда службы должны запускаться с правами root и переходить на учетную запись службы самостоятельно, возможно, после выполнения некоторых начальных операций, которые традиционно требуют доступа с правами root, например открытие порта TCP или UDP. с номером порта ниже 1024.
--user
сервисы запускаются для зарегистрированных -пользователей. По умолчанию предполагается, что все пользовательские службы останавливаются, когда пользователь, которому они принадлежат, выходит из своего последнего оставшегося сеанса в системе; однако системный администратор может разрешить пользовательские процессы оставаться после выхода из системы. В некоторых дистрибутивах это даже разрешено по умолчанию, потому что системы Unix/Linux исторически не были строгими в отношении пользовательских процессов во время выхода из журнала -, и пользователи могут ожидать, что они могут оставить фоновые процессы запущенными при выходе из системы. не делая ничегоsystemd
-конкретного.
(С другой стороны, администраторам многопользовательских -систем традиционно приходилось внедрять различные решения для очистки -старых пользовательских процессов, т.е. когда пользователь ноутбука на самом деле не выходит из системы, а просто закрывает крышку ноутбука и уходит со своим ноутбуком. systemd
позволяет при необходимости точно нацелить процессы каждого сеанса на завершение,но в результате системный администратор должен будет принять политическое решение о том, нужна ли и когда требуется автоматическая очистка сеанса -.)
Если один и тот же пользователь входит в несколько сеансов одновременно, у него будет запущена только одна копия их --user
служб. Таким образом, службы --user
на самом деле не связаны с каким-либо конкретным сеансом пользователя, а только с самим пользователем.
Я думаю, что наличие службы --user
, работающей от кого-то другого, кроме вошедшего в систему -пользователя, сеансу которого она принадлежит, было бы полезно только в очень ограниченных случаях. Если доступ к службе должен быть ограничен только какой-либо общей учетной записью, то я думаю, что обычно лучше сделать ее системной службой, чтобы была возможность поделиться доступом для администрирования службы (и, следовательно, для администрирования. ответственность )перед другими, имеющими доступ к общей учетной записи, если это необходимо.
Вопрос в том, на каком экземпляре systemd запущена служба и кто должен выполнять в ней команды.
Вы можете захотеть, чтобы служба запускалась при входе пользователя joe
,но сами команды предназначены для запуска под общей учетной записью shared_account
. В этом случае служба запускается из пользовательского экземпляра joe
, но доступ к командам может быть ограничен shared_account
.
В целом, разница между --user
и User=
может быть сведена к тому, кто владеет экземпляром службы и какой UID запускает команды в службе. Если User=
не указан, по умолчанию используется владелец экземпляра systemd.