Я нахожусь на OSX, который подобен в установке. У меня есть стандартная учетная запись пользователя (давайте назовем ее JOHN) для ежедневного использования, таким образом, никакие права администратора. У меня есть вторая учетная запись с правами администратора. Мой ноутбук имеет один физический диск с двумя разделами. СИСТЕМНЫЙ раздел для ОС, ДАННЫЕ для всех пользовательских данных. Каждый раз, когда я должен переустановить, я могу вытереть СИСТЕМНЫЙ раздел, затем переустановить и воссоздать пользователя JOHN на СИСТЕМНОМ разделе. То же идет для администраторского пользователя.
Затем я вхожу в систему как администратор, перейдите к Пользователям / (/домой на Linux), переименуйте папку JOHN к JOHN1 и создайте символьную ссылку JOHN к ДАННЫМ/ПОЛЬЗОВАТЕЛЯМ/ДЖОНУ. Затем я выхожу из системы, вход в систему как пользователь JOHN, и все вернулось к нормальному. Я сохраняю администраторского пользователя на СИСТЕМНОМ разделе. Я не сохраняю данных там для хранения размера пользовательских данных по СИСТЕМНОМУ разделу максимально низко. Если ДАННЫЕ раздела испорчены, я могу все еще войти в систему.
В первый раз использование скопируйте папку ДЖОНА в раздел ДАННЫХ с надлежащими правами. Я использовал бы rsync для этого, поскольку это сохраняет все права как, они. После переустановки пользователь, возможно, получил новый системный идентификатор, таким образом, у Вас есть к показанному папка новому пользователю. На OSX это никогда не было проблемой. Я сделал это несколько раз теперь.
Это потому, что вы выводите все числа на экран через put
. Затем они должны быть отправлены по SSH-соединению, что увеличивает время выполнения скриптов. Вывод также буферизуется локально, но эффекты не так заметны.
Вы можете подтвердить это, вместо этого выгрузив весь вывод в файл.
локально на ноутбуке на экран
$ time ruby r.rb
real 0m19.474s
user 0m3.236s
sys 0m3.207s
локально на портативном компьютере в файл
$ time ruby r.rb >& rb_local.txt
real 0m0.785s
user 0m0.760s
sys 0m0.020s
SSH на рабочий стол на экран
$ time ruby r.rb
real 0m18.026s
user 0m4.118s
sys 0m3.815s
SSH на рабочий стол в файл
$ time ruby r.rb >& rb_remote.txt
real 0m3.942s
user 0m3.036s
sys 0m0.741s
Обычно это хорошая идея при написании таких сценариев вместо этого выгрузить содержимое в файл, а затем использовать такой инструмент, как tail
, для периодического просмотра файла.
ПРИМЕЧАНИЕ: Нотация > &
перенаправит как STDERR, так и STDOUT в файлы .txt
. Однако вывод из времени
по-прежнему будет отображаться на консоли. Это обозначение эквивалентно cmd> some_file.txt 2> & 1
.
Печать на консоли (особенно на удаленной консоли) - довольно дорогостоящая операция, если она выполняется в замкнутом цикле, который выполняется часто. Большая часть операций ввода-вывода Ruby является блокирующей, поэтому это резко замедляет выполнение программы.
Вы должны получить гораздо более разумный результат, если вместо этого отправите вывод в файл (или / dev / null
, если вас это не волнует):
time ruby ./rubytest.rb >/dev/null