find
GNU или нет GNU С GNU-версией find
вы можете писать напрямую, не ища их inode,
find . -name '.<*' -delete
конечно, всегда рекомендуется попробовать без опции -delete
и проверить имена файлов, которые вы собираетесь удалить.
С версией, отличной от GNU, это тоже можно было сделать напрямую find. -name '. , который работает также с версией GNU, только примерно в 3 раза медленнее [ 1 ] , чем с
-удаление
.
Если файлов не слишком много, можно использовать и поиск. -name '. , снова быстрее.
perl
Предполагается, что . в качестве ключа, который выбирает все и только файлы, которые вы хотите удалить (не без некоторого спортзала в строке)
perl -e 'for(<'.'\<'*'>){((stat)[9]<(unlink))}'
Для удаления всех скрытых файлов каталога достаточно perl -e 'для () {((stat) [9]
Это быстрее с большим количеством файлов. Проверьте выражение, потому что я обычно не работаю с perl.
В общем, вы можете попробовать переместить все другие файлы в другой каталог и удалить исходный каталог.
mv /tmp /tmp2; mkdir tmp; mv /tmp2/* /tmp; rm tmp2
Недостатки, если какой-то файл уже используется ... но бывают случаи, когда вы тоже можете его использовать .
Ps> не забудьте rsync
to / dev / null
с опцией -delete
...
Поскольку вы спрашивали, как это сделать с помощью systemd.& #9786;
Вот как люди из systemd говорили людям делать это.
Вы помещаете файл сервисного модуля в неправильный каталог. Он не должен идти в /etc/systemd
. Он даже не должен входить в /etc/systemd/system
. Он должен идти в ~marton/.config/systemd/user
.
Это связано с тем, что графическая программа, которую вы хотите запустить под своей учетной записью, является службой для -пользователя , а не системной службой. (В настоящее время вы используете веб-браузер в качестве суперпользователя. Это очень плохая идея. Прекратите это немедленно ! )Вы могли бы настроить его для всех пользователей в каталоге /etc/systemd/user
, но вполне вероятно, что не всем пользователям на вашем компьютере нужно запускать Chromium как службу. Поэтому настройте его только для своей учетной записи пользователя, в частности.
Так как это сервис для каждого -пользователя, вы должны манипулировать им с опцией --user
на systemctl
, без sudo
. Например:
systemctl --user status chrome.service
Это также относится к его включению и отключению.
В соответствии с -пользовательской единицей обслуживания это должно быть WantedBy=default.target
, потому что нет multi-user.target
для каждой -пользовательской службы. (Хотя я подозреваю, что на самом деле должно быть WantedBy=your-desktop-session.target
, что будет что-то вроде gnome-session.target
в зависимости от того, какой рабочий стол вы используете. То, что говорили люди из systemd, не совсем ясно по этому поводу.)
И одна часть задачи systemd, которую люди должны сделать для каждого -пользовательского сервиса, похожего на -логин -сервис сеанса, — это весь graphical-session
механизм, который ваш сервисный модуль должен включить в настройку:
[Unit] PartOf=graphical-session.target
Что еще вам нужно сделать, зависит от того, насколько OpenSuSE продвинулась со всей graphical-session
чепухой, которую разработчики systemd начали продвигать в 2016 году.Ubuntu и Debian предоставляют полный беспорядок закулисных сценариев оболочки при запуске и завершении сеанса входа в систему с графическим интерфейсом, который скрывает как запуск / остановку graphical-session.target
, так и внедрение переменной среды DISPLAY
. Если в вашем OpenSuSE этого еще нет, возможно, вам придется заполнить эту часть.
Я попробовал это сам и, как и вы, обнаружил, что systemd
не подходит для работы, когда дело доходит до запуска графических настольных приложений. Простой подход — использовать функцию «автозапуск приложений» предпочитаемой вами среды рабочего стола.
Разница в том, что systemd
не имеет простого доступа к переменной окружения DISPLAY
, в то время как подход «автозапуск приложений» будет.
Короче (дополнительно к JdeBP):
Никогда не используйте root
, если в этом нет крайней необходимости. Меньше всего для браузера, так как большинство бесчисленных ошибок в них привели бы к прямому root-доступу к злоумышленнику.
Поместите файлы systemd в~/.config/systemd/user
Включить :Например.systemctl --user enable firefox
~/.config/systemd/user/firefox.service
:
[Unit]
Description=Start Firefox
PartOf=graphical-session.target
[Service]
ExecStart=/usr/bin/firefox
Type=oneshot
[Install]
WantedBy=graphical-session.target
Это должно запускать Firefox при загрузке.
Если graphical-session.target
вам не подходит (, так как есть что-то другое, управляемое менеджером входа в систему, ваш менеджер дисплея или Google знают, что )посмотрите на systemctl --user status *.target
, что еще может быть.
Если graphical-session.target
не активен после графического входа в систему (у вас может быть старая или стабильная система ), вы можете запустить ее вручную, добавив следующее в свой~/.xsessionrc
:
systemctl --no-block --user start graphical-session.target
Это работает для меня. Суть в том, чтобы добавить User
в Service
, а также инициировать DISPLAY
в Environment
.
[Unit]
Description=launch chromium
[Service]
User=<user>
Environment=DISPLAY=:0
ExecStart=/usr/bin/chromium-browser
[Install]
WantedBy=user@.service