What sort of command can locate the device file used by a USB. As in the directory it creates to open the actual USB.
Вы можете просмотреть список блочных устройств, используя:
$ lsblk
Пример вывода:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 119.2G 0 disk |-sda1 8:1 0 488.3M 0 part /efi |-sda2 8:2 0 109.4G 0 part / `-sda3 8:3 0 9.4G 0 part [SWAP] sdb 8:16 0 931.5G 0 disk `-sdb1 8:17 0 931.5G 0 part /media/storage sdc 8:32 1 7.4G 0 disk `-sdc1 8:33 1 7.4G 0 part
Имя — это блочное устройство, строки с отступом под соответствующим блочным устройством — это разделы, столбец точки монтирования показывает, где они смонтированы в файловой системе. (Если они смонтированы.)
В этом примере второй жесткий диск подключен к /media/storage
Существует также USB-устройство (sdc ), которое в настоящее время не подключено.
Блочные устройства и их разделы находятся в папке /dev/.
См.:https://ss64.com/bash/lsblk.html
how do I mount a filesystem to a directory of my choice e.g. "TechCategory"
Вы можете использовать команду mount для монтирования раздела в файловую систему:
$ mount /dev/sdc1 /media/TechCategory
Если мы сейчас вернемся к нашему lsblk,мы видим:
sdc 8:32 1 7.4G 0 disk `-sdc1 8:33 1 7.4G 0 part /media/TechCategory <-- USB is now mounted here.
См.:https://ss64.com/bash/mount.html
and check the filesystem for errors?
Вы можете использовать команду badblocks, см.:Как вы используете badblocks?
Пример:
badblocks -sv /dev/sdc
Can I add a line to /etc/fstab to ensure that the filesystem can be easily mounted in the future?
Я бы рекомендовал убедиться, что вы понимаете, как работает файл /etc/fstab, прежде чем редактировать его.
$ man fstab
Еще один ответ по обмену стеками, Подключить жесткий диск при запуске -вверх
Вы сохраняете вывод в main.csv
, но перезаписываете файл на каждой итерации цикла. Вместо этого переместите перенаправление сразу после done
.
Вы также пытаетесь сделать слишком много вещей на удаленных системах. Единственное, для чего вам нужна удаленная система, это запустить du
, больше ничего.
#!/bin/sh
while IFS=, read -r remote pathname user
do
ssh -n -l "$user" "$remote" "df -h '$pathname'" |
awk -v h="$remote" -v p="$pathname" '
NR == 2 {
if (($5 + 0) > 60)
level="WARNING"
else
level="INFO"
printf "%s: %s disk usage for %s on %s\n", level, $5, p, h
}'
done <fi.csv >output.txt
Здесь мы просто читаем ввод с разделителями-запятыми -из fi.csv
, вызываем du -h
для интересующего нас пути, затем локально анализируем результат с помощью awk
. Вывод записывается в output.txt
.
Мы знаем, что получаем две строки из df
, поэтому делаем так, чтобы код awk
заботился только о второй строке(NR == 2
). Затем мы выводим сообщение, показывающее текущий процент использования диска, с префиксом WARNING
или INFO
в зависимости от того, превышает ли процент 60 или нет.