У меня есть следующий скрипт в bash:
ssh user@1.1.1.1 "echo 'start'
mkdir -p /home/user/out
cp /tmp/big_file /home/user/out
echo 'syncing flash'
sync
while [[ $(cat /proc/meminfo | grep Dirty | awk '{print $2}') -ne 0 ]] ; do
echo \"$(cat /proc/meminfo)\"
sleep 1
sync
done
echo 'done'"
У меня есть хост-компьютер и целевой компьютер, на который я копирую. Перед тем, как запустить этот скрипт, я уже скопировал большой файл в / tmp в целевой папке.
Когда я запускаю этот скрипт, он копирует файл / tmp / big ok, но когда он входит в цикл для синхронизации флэш-памяти, и я жду, пока meminfo Dirty
достигнет нуля, то, что я вижу, всегда повторяется Dirty: 74224 kB
в петля.
Однако в другом сеансе ssh, вошедшем в систему к цели, она у меня работает:
watch -n1 "cat /proc/meminfo | grep Drity"
И я вижу, что этот счетчик уменьшился с ~ 74000 КБ до 0 КБ.
Разница в том, что сессия ssh, выполняющая watch
, вошла в систему как root, а ssh вошла в user
.
Итак, я выполнил тот же тест с оболочкой ssh, вошедшей в систему как user
, и всегда видел 0kb в Drity ...
Означает ли это, что user
не может прочитать памятку, относящуюся ко всей системе? - как я могу узнать, когда флэш-память синхронизировалась как пользователь без полномочий root?