LINUX.ORG.RU

Ubuntu. Fsck как в Open Suse

 , ,


0

2

Когда-то пользовалься Suse и там вывод fsck (плановая проверка во время загрузки системы) был примерно таким:

=============================               79.9%
в Ubuntu как-то неинформативно, — выводится сообщение вида
"ждите... или отмените..."
Это можно изменить? Если да, то как? То, что мне нужно, дает команда
e2fsck -f -C0
Всунуть куда-то
fsck -f -C0
но куда и как, я не знаю.

man alias

J ★★★★★
()
Ответ на: комментарий от bsdfun

Он же при загрузке хочет.

При загрузке вроде должны влиять настройки, помещённые в «/etc/e2fsck.conf». Только я не экспериментировал в каком именно формате всё туда прописывается.

justAmoment ★★★★★
()
Последнее исправление: justAmoment (всего исправлений: 1)
Ответ на: комментарий от anonymous

Только если есть гарантия, что журнал корректен

leave ★★★★★
()

Некоторые невнимательно читают сообщение. Алиасы тут не при чем.

В двух словах, как я это понимаю. Где-то есть некий скрипт, который проверяет, сколько раз монтировался системный раздел. Например, у меня стоит «Maximum mount count: 27» и когда раздел монтируется 26-й раз, создается пустой файлик в корне с названием forcefsck, на это ориентируется скрипт и запускает проверку раздела во время следующей (27-й) загрузки системы.

Нашел несколько файлов, но не знаю что с ними можно делать.

/usr/lib/update-notifier/update-motd-fsck-at-reboot. Наверно он проверяет и уведомляет, если залогиниться в консоли (иногда я попадал на такие уведомления)

# poor mans force
if [ "$1" = "--force" ]; then
    NEEDS_FSCK_CHECK=yes
fi

# check time when we did the last check
stamp="/var/lib/update-notifier/fsck-at-reboot"
if [ -e "$stamp" ]; then
    stampt=$(stat -c %Y $stamp)
else
    stampt=0
fi

now=$(date +%s)
if [ $(($stampt + 3600)) -lt $now ] || [ $stampt -gt $now ]; then
    #echo $stampt $now need update 
	NEEDS_FSCK_CHECK=yes
fi

# output something for update-motd
if [ -n "$NEEDS_FSCK_CHECK" ]; then
    > $stamp
    check_occur_any=

    ext_partitions=$(mount | awk '$5 ~ /^ext(2|3|4)$/ { print $1 }')
    for part in $ext_partitions; do
        dumpe2fs_out=$(dumpe2fs -h $part 2>/dev/null)
        mount_count=$(echo "$dumpe2fs_out" | grep "^Mount count:"|cut -d':' -f 2-)
        if [ -z "$mount_count" ]; then mount_count=0; fi
        max_mount_count=$(echo "$dumpe2fs_out" | grep "^Maximum mount count:"|cut -d':' -f 2-)
        if [ -z "$max_mount_count" ]; then max_mount_count=0; fi
        check_interval=$(echo "$dumpe2fs_out" | grep "^Check interval:" | cut -d':' -f 2- | cut -d'(' -f 1)
        if [ -z "$check_interval" ]; then check_interval=0; fi
        next_check_date=$(echo "$dumpe2fs_out" | grep "^Next check after:" | cut -d':' -f 2-)
        if [ -z "$next_check_interval" ]; then next_check_interval=0; fi
        next_check_tstamp=$(date -d "$next_check_date" +%s)
check_occur=
        # Check based on mount counts?
        if [ "$max_mount_count" -gt 0 -a \
             "$mount_count" -ge "$max_mount_count" ]; then
            check_occur=yes
        fi
        # Check based on time passed?
        if [ "$check_interval" -gt 0 -a \
             "$next_check_tstamp" -lt "$now" ]; then
            check_occur=yes
        fi
        if [ -n "$check_occur" ]; then
            check_occur_any=yes
            echo "*** $part will be checked for errors at next reboot ***" >> $stamp
        fi
    done
    if [ -n "$check_occur_any" ]; then
        echo "" >> $stamp
    fi
fi

/etc/init/mountall.conf

script
    . /etc/default/rcS
    [ -f /forcefsck ] && force_fsck="--force-fsck"
    [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"

    # set $LANG so that messages appearing in plymouth are translated
    if [ -r /etc/default/locale ]; then
        . /etc/default/locale
        export LANG LANGUAGE LC_MESSAGES LC_ALL
    fi

    exec mountall --daemon $force_fsck $fsck_fix
end script

post-stop script
    rm -f /forcefsck 2>dev/null || true
end script

Как я понимаю из mountall.conf идет проверка наличия файла forcefsck в корне и соответственно, запуск fsck.
Но вот не знаю, откуда параметр --force-fsck. В fsck help/man такого нет.
Сложно.

П.С. почему в первом коде не работает подсветка синтаксиса? я вроде указал как написано в www.linux.org.ru/wiki/en/Lorcode
[coдe=баш][/coдe]
или так неправильно?

Bugs-Bunny
() автор топика
Ответ на: комментарий от Bugs-Bunny

Файловая система ext2 имеет встроенный счётчик числа монтирований и настраиватся на проверку по числу монтирований/интервалу времени через ″tune2fs″.

Параметр --force-fsck передаётся не ″fsck″, а ″mountall″. Вроде как даже есть man mountall. Но, ЕМНИП, это проверка не корневой, а всех остальных ФС. Корневую систему проверют из initrd.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.