Не может запустить systemd пользовательский экземпляр

Если я пойму Вас правильно, то это даст Вам, хотят Вас, хотите:

find /path/to/target -type d | while IFS= read -r dir; do 
  echo -ne "$dir\tsize: $(du -sh "$dir" | cut -f 1)" 
  echo -ne "\tsubdirs: $(find "$dir" -mindepth 1 -type d | wc -l)"
  echo -e "\tfiles: $(find "$dir" -type f | wc -l )";
done  | tac

Если Вы работаете на этом /boot например, Вы производитесь как это:

/boot/burg/themes/sora_extended size: 8.0K  subdirs: 0  files: 1
/boot/burg/themes/radiance/images   size: 196K  subdirs: 0  files: 48
/boot/burg/themes/radiance  size: 772K  subdirs: 1  files: 53
/boot/burg/themes/winter    size: 808K  subdirs: 0  files: 35
/boot/burg/themes/icons size: 712K  subdirs: 0  files: 76
/boot/burg/themes   size: 8.9M  subdirs: 26 files: 440
/boot/burg/fonts    size: 7.1M  subdirs: 0  files: 74
/boot/burg  size: 20M   subdirs: 29 files: 733
/boot/grub/locale   size: 652K  subdirs: 0  files: 17
/boot/grub  size: 4.6M  subdirs: 1  files: 224
/boot/extlinux/themes/debian-wheezy/extlinux    size: 732K  subdirs: 0  files: 11
/boot/extlinux/themes/debian-wheezy size: 1.5M  subdirs: 1  files: 22
/boot/extlinux/themes   size: 1.5M  subdirs: 2  files: 22
/boot/extlinux  size: 1.6M  subdirs: 3  files: 28
/boot/  size: 122M  subdirs: 36 files: 1004

Чтобы иметь легкий доступ к этой команде, Вы могли превратить его в функцию. Добавьте эти строки к файлу инициализации своей оболочки (~/.bashrc для удара):

dirsize(){
    find "$1" -type d | while IFS= read -r dir; do 
    echo -ne "$dir\tsize: $(du -sh "$dir"| cut -f 1)" 
    echo -ne "\tsubdirs: $(find "$dir" -mindepth 1 -type d | wc -l)"
    echo -e "\tfiles: $(find "$dir" -maxdepth 1 -type f | wc -l )";
    done  | tac
}

Можно теперь выполнить его как dirsize /path/.


Объяснение

Функция выше имеет 5 больших частей:

  1. find /path/to/target -type d | while IFS= read -r dir; do ... ; done : Это найдет все каталоги под /path/to/target и обработайте каждый из них путем установки переменной dir к их имени. IFS= гарантирует, что это не повредится на каталогах с пробелами на их имена.

  2. echo -ne "$dir\tsize: $(du -sh "$dir" | cut -f 1)" : Это использует команду du получить размер каталога и cut распечатать только первое поле du.

  3. echo -ne "\tsubdirs: $(find "$dir" -mindepth 1 -type d | wc -l)" : Эта команда находки ищет подкаталоги $dir. type -d гарантирует, чтобы мы только нашли каталоги, никакие файлы и -mindepth удостоверяется, что мы не считаем текущий каталог, ..

  4. echo -e "\tfiles: $(find "$dir" -maxdepth 1 -type f | wc -l)"; : Этот ищет файлы (-type f) это непосредственно (-maxdepth 1) под $dir. Это не будет считать файлы, которые находятся в подкаталогах $d.

  5. | tac : Наконец, через все это проходят tac который просто инвертирует порядок, в котором печатаются строки. Это означает, что общий размер целевого каталога покажется последней строкой. Если это не то, что Вы хотите, просто удаляете | tac.

3
19.11.2014, 11:26
2 ответа

Попытаться работать , systemctl состояние user@root.service , для замены пользователя поддерживают пользователя, для запуска сервиса просто работает , systemctl запускают user@root.service (если сервис деактивирован).

1
27.01.2020, 21:27

Вместо того, чтобы пытаться создать пользовательский системный сервис Systemd, я оказался введением

...

[Service]
...
User=1000

пользовательской директивы в файле Systemd, который, похоже, запускает службу как мой пользователь, и, таким образом, имеет тот же намеченный результат как пользовательский системный сервис.

Моя собственная система остается загадкой для меня.

1
27.01.2020, 21:27

Теги

Похожие вопросы