Статус выхода fsck «Система должна быть перезагружена»

У вас, видимо, есть ответ в комментариях. Я бы написал ваш код так, что избавляет от необходимости обращаться к вашим сценариям timeи check.sh. Это также уменьшает дублирование кода.

#!/usr/bin/expect

# assign command line arguments to variables
#  First Argument is Ip Address
#  Seond Argument is UserName
#  Third Argument is Password
#  Fourth Argument is Path to the source File to be copied (Keeping in mind that this path is concatenated with the second path in the program)
#  Fifth Argument is the destination path

lassign $argv ip user password file1 file2

set start [clock milliseconds]

set scp_args {-p}

if {[file isdirectory $file1]} {
    puts "It is a directory"
    lappend scp_args "-r"
    set c [exec find $file1 -type f | wc -l]

} elseif {[file isfile $file1]} {
    puts "It is a file"
    set c 1

} else {
    puts "$file1 is a [file type $file1]"
    exit 1
}

puts "Number of Files to be copied: $c"

#Set the timeout time for scp command
set timeout 5

#Executes the scp command
spawn scp {*}$scp_args $file1 $user@$ip:$file2

expect "password:"
send "$password\r"

expect eof
close

set end [clock milliseconds]
set elapsed [expr {($end - $start) / 1000.0}]
puts [format "duration: %.3f seconds" $elapsed]
-1
22.08.2019, 19:25
1 ответ

Это означает, что рассматриваемая файловая система была смонтирована во время выполнения проверки, fsckпришлось фактически изменить данные на -диске, чтобы исправить ошибку, и файловая система не может быть перемонтирована вручную без перезагрузки системы..

В основном это происходит, когда ошибки обнаруживаются (и исправляются )в корневой файловой системе. Если у вас нет действительно причудливой среды initramfs или восстановления, из которой вы проверяете файловую систему, вы запускаете корневую файловую систему во время ее проверки (, поэтому она монтируется только для чтения -).

Из соображений производительности ядро ​​не выполняет повторную проверку кэшированных метаданных для смонтированных файловых систем (, поскольку ничто (кроме fsckне должно изменять данные на -диске, кроме ядра для смонтированной файловой системы ), поэтому, если fsckнужно исправить некоторые из этих метаданных, необходимо либо уведомить ядро ​​(, что невозможно в большинстве UNIX-систем ), либо указать пользователю размонтировать файловую систему, а затем смонтировать это снова, чтобы заставить ядро ​​подобрать измененные метаданные. Единственный способ сделать это с корневой файловой системой — фактически перезапустить саму систему.

2
28.01.2020, 05:08

Теги

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