Я бы использовал немного другой подход и делал больше работы непосредственно в неловком состоянии. Во-первых, используйте FNR
, который возвращается к 1 каждый раз, когда новый файл обрабатывается awk
, и отправьте все a- или b- файлы в awk
сразу:
$ for f in a b; do
awk '(FNR==1 && n>1){
av=x/n;if(av>max){
max=av;f=FILENAME
}
x=0; n=0
}
{x+=$4;n=FNR}
END{
if(x/n>max){print x/n,FILENAME}
else{print max,f}'
} "$f"[1..4]/"$f"[1..4].txt; done
18898.4 a3.txt
18806 b4.txt
Это дает нам два файла с наибольшим средним значением. Чтобы переместить их, можно просто удалить значение из выходных данных сценария previus, сохранив только имя файла и передав его непосредственно команде cp
:
$ cp -v $(for f in a b; do awk '(FNR==1 && n>1){av=x/n;if(av>max){max=av;f=FILENAME};x=0;n=0}{x+=$4;n=FNR} END{if(x/n>max) print x/n,FILENAME; else print max,f}' "$f"[1-4]/"$f"[1..4].txt; done) bar/
‘a3.txt’ -> ‘bar/a3.txt’
‘b4.txt’ -> ‘bar/b4.txt’
Обратите внимание, что это приведет к разрыву, если имена файлов содержат пробелы или символы glob.
-121--108158-
Я не думаю, что вы хотите делать то, что вы просите. Если требуется только вывод одной команды, используемой в качестве аргумента другой команды, то структуры, такие как $ (...)
или '...'
, являются вашим другом. Например:
sudo python ~/testsite/manage.py runserver $(hostname -I):80
Обратите внимание, что это НЕ то, что вы просили, а то, что вы хотите.
Если вы действительно хотите, чтобы stdin (канал) использовался в качестве аргумента, вы можете использовать xargs (1) или быстрый во время
цикла в вашей оболочке.
Это помещает stdin в конец строки:
echo Hello | xargs echo "The word is:"
или если вы хотите что-то подставить внутри строки:
echo Hello | xargs -J % echo % is the word.
Но xargs может быть сложно использовать, если вы не в состоянии понять его (несколько арканового) использования. Команда xargs также варьируется от ОС к ОС; опция -J
работает в BSD и OSX, но не в некоторых старых distros Linux. Я не знаю, какую ОС вы используете.
Цикл может быть проще:
echo Hello | while read word; do echo "$word is the word."; done
Или в вашем случае:
hostname -I | while read ip; do
sudo python ~/testsite/manage.py runserver ${ip}:80
done
Цикл запускается только один раз, но вы можете собрать свою командную строку немного легче. ЯММВ.
-121--138817-
Раздел /dev/sda2
отображается как «полный», поскольку он полностью выделен для LVM, который управляет разделами /
и /home
. В результате нам не нужно напрямую смотреть на /dev/sda2
, а скорее на конфигурацию LVM. Из выходных данных lsblk
видно, что
└─sda2 8:2 0 595.9G 0 part
├─ManjaroVG-ManjaroRoot 254:0 0 29.3G 0 lvm /
├─ManjaroVG-ManjaroHome 254:1 0 558.9G 0 lvm /home
└─ManjaroVG-ManjaroSwap 254:2 0 7.8G 0 lvm [SWAP]
, скорее всего, весь LVM выделен ManjaroRoot
, ManjaroHome
и ManjaroSwap
. Это означает, что расширение разделов не является опцией без предварительного добавления нового PV LVM или сокращения существующего LVM LV (не простая задача). Однако эти варианты лечат симптом, а не проблему.
Проблема в том, что /
на устройстве /dev/mapper/ManjaroVG-ManjaroRoot
заполнен. Раздел /home
не заполнен и не относится к вашей проблеме.
Из ваших выходных данных du
видно, что наибольшее использование диска в /
:
3.2G /data
1.1G /opt
7.6G /usr
14G /var
Использование /data
, /opt
и /usr
выглядит разумным, но отклонение составляет /var
, который использует тонну космоса.
Некоторые обновленные сведения от вас в чате показывают, что это не проблема с журналом, как я подозревал, а скорее проблема с кэшем пакета pacman
. Вы можете очистить старые файлы из кэша с помощью команды:
pacman -Sc
Вы можете прочитать больше об очистке кэша пакетов на вики Arch.
С помощью systemd для инициализации цель восстановления systemd может быть достигнута путем добавленияsystemd.unit=rescue.target
(или emergency.target
, если это не удается, )к командной строке загрузки в /boot/cmdline.txt
.
Если это не работает по какой-либо причине или в системе, отличной от -systemd, вместо этого добавьте init=/bin/sh
в конец строки, что заставит систему полностью проигнорировать все, что связано с инициализацией.
Возможно, вам потребуется смонтировать файловую систему для чтения -для записи, чтобы внести какие-либо изменения. Вы можете сделать это, добавив rw
в командную строку загрузки или выполнив mount -o remount,rw /
при загрузке.
systemd сканирует аргумент ядра. для отключения например cron.service добавить в загрузчик:
systemd.mask=cron.service
Если у вас есть доступ к config.txt, вы должны изменить его на cmdline.txt.
Источник:
https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md
Источник :https://www.freedesktop.org/software/systemd/man/kernel-command-line.html