LINUX.ORG.RU

Как узнать время работы команды cd?

 ,


1

1

Играюсь здесь с ЯДом... Решил сделать протокол. Делаю:

# /usr/bin/time "cd /e"
/usr/bin/time: cannot run cd /e: No such file or directory
Command exited with non-zero status 127
0.00user 0.00system 0:00.00elapsed 61%CPU (0avgtext+0avgdata 1240maxresident)k
0inputs+0outputs (0major+37minor)pagefaults 0swaps

Это встроенная команда шелла, со всеми вытекающими.
И? Как запротоколировать время работы команды cd?

★★★
Ответ на: комментарий от Aceler

Сискол chdir вызывает path_get

/**
 * path_get - get a reference to a path
 * @path: path to get the reference to
 *
 * Given a path increment the reference count to the dentry and the vfsmount.
 */
void path_get(const struct path *path)
{
	mntget(path->mnt);
	dget(path->dentry);
}
anonymous
()

тред конечно ржака. алко с нг еще не выветрилась? strace же ну… он тебе распишет каждый вызов с временем и ищи что там тебе надо померить в этой cd path.

antech
()
Ответ на: комментарий от CrX

Логика как раз не странная — стоит всегда сообщать, какая проблема решается на самом деле, с перечислением предпринятых попыток решения. Иначе это прям типичнейшая проблема XY, как в этом треде.

Хорошо, всё начиналось с «соседнего» треда: «Можно ли заставить ЯД (Яндекс Диск) - синхронизировать атрибуты/владельца файлов?»

Где вместо предложения решения, все дружно посмеялись на тем что я хочу от «облаков» странного. Но ведь должна же быть подсистема, позволяющая сохранять POSIX на неPOSIX фс (Типа FAT). Неужели такого ещё не сделали? Я предположил что подойдут файловые шифрованные fs (Не в контейнере, а прямо в файлах). Нашел cryfs и ecryptfs, которые есть прямо в репе Дебиане. Смонтировал локальное зеркало ЯДа в cryfs. Залил 65Гб барахла из открытых каталогов. После этого cryfs стал жутко тормозить, (При навигации в нём через mc), да и заливалось 7.5 часов и я начал выяснять в чём тормоза. Типа: $cd cry;df, но cd оказалась встроенной и началось...

Ну да ладно, в целом cryfs конечно исполняет задачу. Он хранит дату/время/rwx в своём формате и файлы переживают переезд на другой хост через yandex-disk. Но слишком тормозно.

Вот ecryptfs, быстрый, но к сожалению время/rwx берёт прямо с зашифрованного файла, и не выдерживает переезд через yandex-disk.
На зеркальном хосте - все файлы становятся текущей даты/времени и rwx по умолчанию.

Запдача так и осталась, найти подсистему, позволяющую хранить скажем полный posix на ФС типа 8+3. (Это утрировано конечно).

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

Где вместо предложения решения, все дружно посмеялись на тем что я хочу от «облаков» странного. Но ведь должна же быть подсистема, позволяющая сохранять POSIX на неPOSIX фс (Типа FAT). Неужели такого ещё не сделали?

А зачем? Эта проблема ведь проще решается — VPS’кой с POSIX фс. Без всякий костылей, приставленных к FAT и прочему ненужно.

Я предположил что подойдут файловые шифрованные fs (Не в контейнере, а прямо в файлах).

Ну да, подойдут. Но зачем тебе именно шифрованные. В начале же о шифровании речи не шло.

Нашел cryfs и ecryptfs, которые есть прямо в репе Дебиана. Смонтировал локальное зеркало ЯДа в cryfs.

Не, ну если прям монтировать, то да, конечно, будет люто тормозить. Проще целиком синхронизировать весь файл периодически.

С другой стороны, тут справится и tar, или SquashFS, например.

Запдача так и осталась, найти подсистему, позволяющую хранить скажем полный posix на ФС типа 8+3. (Это утрировано конечно).

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

Зачем тебе именно на ФС типа 8+3?

Моё предположение (если я неправ, то скажи в чём именно): ты хочешь платить денежку и за это получать место в датацентре, в котором ты сможешь хранить свои файлы с сохранением прав доступа, владельца, времени доступа, и чего там ещё. При этом тебе желательно, чтобы можно было монтировать эту ФС и использовать, грубо говоря, как локальную.

Это так? Разве не такая задача стоит?

Ну вот если такая, то решение очень простое: самый дешёвый VPS + место с POSIX-совместимой FS. Получаешь доступ по SSH, монтируешь с помощью той же SSHFS и радуешься: всё летает, все атрибуты сохраняешь как хочешь, всё прозрачно. Ещё и какие-нибудь программы или скрипты можешь прям там на месте запускать, без выкачивания файлов.

Чем это решение не подходит?

Тем, что выходит дороже, чем ЯД? Ну да, дороже. Но на то оно и ЯД, чтобы быть дешёвым говном. Никто твои необычные проблемы там решать не будет. Да, можно сэкономить и наворотить вокруг этого дешёвого ЯД костыли, которые позволят выполнить задачу. Но будет медленно и не очень удобно — на то они и костыли. С этим ты, впрочем, и так справился.

Что тут ещё «придумывать»? Есть два решения задачи: хорошее (но требующее больше вложений) и дешёвое — экономия за счёт использования «облаков» «не по назначению».

Ещё один костыль — тупо сохранять время, права, владельца и прочее в какую-нибудь SQLite, или вообще в текстовый файлик. Не руками, конечно, а скрипт копирования сделать, который сохраняет, а потом заливает файлы на ЯД. И, соответственно, наоборот — выкачивает файлы и сразу к ним применяет сохранённые атрибуты. Так не будет тормозов, но это тоже костыль, и придётся ещё этот текстовый или .db файлик хранить локально и/или на том же ЯД рядом с остальным. Ну и два небольших скрипта наваять.

CrX ★★★★★
()

Есть time – бинарник, есть time – ключевое слово в bash. Попробуйте просто:

$ time cd /path/where/you/want

real	0m0.000s
user	0m0.000s
sys	0m0.000s

Не исключено, что может сработать вместо этого бинарник, тогда надо будет экранировать.

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

Не исключено, что может сработать вместо этого бинарник

Есть же приоритеты alias > function > builtin > file (или так должно быть, по логике) и при прочих равных, порядок в PATH.

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

Может быть.

Я просто помню, что как-то столкнулся с проблемой, которая потребовала экранизации и на другом форуме решал. Но саму проблему не помню. :-)

Глянул тот топик. Мне нужно было результат команды записывать в лог. Проверил исходники time всё пишет в stderr. Так работать не будет:

$ time echo test 2> LOG
test

real    0m0.000s
user    0m0.000s
sys     0m0.000

Надо делать так:

${ time echo test; } 2> LOG
test
Jullyfish
()
Ответ на: комментарий от CrX

Где вместо предложения решения, все дружно посмеялись на тем что я хочу от «облаков» странного. Но ведь должна же быть подсистема, позволяющая сохранять POSIX на неPOSIX фс (Типа FAT). Неужели такого ещё не сделали?

А зачем? Эта проблема ведь проще решается — VPS’кой с POSIX фс. Без всякий костылей, приставленных к FAT и прочему ненужно.

Стоимость VPS с 2Т диском? А VPN и использование её как сетевого хранилища файлов разрешено? По факту или цена заоблачная или ничего не разрешено.

Я предположил что подойдут файловые шифрованные fs (Не в контейнере, а прямо в файлах).

Ну да, подойдут. Но зачем тебе именно шифрованные. В начале же о шифровании речи не шло.

Вначале я спрашивал есть ли такие подсистемы без шифрования.

Нашел cryfs и ecryptfs, которые есть прямо в репе Дебиана. Смонтировал локальное зеркало ЯДа в cryfs.

Не, ну если прям монтировать, то да, конечно, будет люто тормозить. Проще целиком синхронизировать весь файл периодически.

Вы поняли что написали? Я про ЛОКАЛЬНОЕ МОНТИРОВАНИЕ! Почему оно должно люто тормозить?

С другой стороны, тут справится и tar, или SquashFS, например.

Каким образом? Ежедневно тарить и заливать на ЯД?

Запдача так и осталась, найти подсистему, позволяющую хранить скажем полный posix на ФС типа 8+3. (Это утрировано конечно).

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

Блин, да мне тупо надо ~/bin залить на облако и на КАЖДОМ моём хосте смонтировать в ~/bin, чтобы везде я мог скзать скажем: jpeg2time <subdir> и она выдернула из всех ЖПЕГов EXIFы и засунула из них время во время модификации файла!
Именно на ЛЮБОМ хосте, а не держать везде актуальную копию этого ~/bin

Зачем тебе именно на ФС типа 8+3?

Я же написал: УТРИРУЮ!

Моё предположение (если я неправ, то скажи в чём именно): ты хочешь платить денежку и за это получать место в датацентре, в котором ты сможешь хранить свои файлы с сохранением прав доступа, владельца, времени доступа, и чего там ещё. При этом тебе желательно, чтобы можно было монтировать эту ФС и использовать, грубо говоря, как локальную.

Именно, но я не хочу за это платить 5к/мес, хочу 2.5к/год!

Это так? Разве не такая задача стоит?

Зайдём с другого боку... Есть ЯД 2Т на 2Г за 1000р! надо его для этого приспособить!

Ну вот если такая, то решение очень простое: самый дешёвый VPS + место с POSIX-совместимой FS. Получаешь доступ по SSH, монтируешь с помощью той же SSHFS и радуешься: всё летает, все атрибуты сохраняешь как хочешь, всё прозрачно. Ещё и какие-нибудь программы или скрипты можешь прям там на месте запускать, без выкачивания файлов.

Не смеши мои коленки... Посмотри сколько стоит VPS с диском на 2Т, и можно ли из него устраивать ВПН? Самый дешевый ВПС - имеет диск, дай Боже 10Гб. и за это надо платить 500р/мес=6т/год.

Чем это решение не подходит?

ЦЕНОЙ! И у меня уже есть ЯД! И я хочу его приспособить. Впрочем у меня и ВПС есть, но для других целей. впрочем возможно с него и смонтирую ~/bin, если облака отсасывают у ВПС, а от ЯДа откажусь, в апреле надо будет или продлять или слать.

Тем, что выходит дороже, чем ЯД? Ну да, дороже. Но на то оно и ЯД, чтобы быть дешёвым говном. Никто твои необычные проблемы там решать не будет. Да, можно сэкономить и наворотить вокруг этого дешёвого ЯД костыли, которые позволят выполнить задачу. Но будет медленно и не очень удобно — на то они и костыли. С этим ты, впрочем, и так справился.

Вообще не думал что облака так сосут...

Что тут ещё «придумывать»? Есть два решения задачи: хорошее (но требующее больше вложений) и дешёвое — экономия за счёт использования «облаков» «не по назначению».

Это словоблудие, и не больше. Это я и так понимаю. Ну если ЯД сосёт - значит они потеряют клиента, и пусть сосут дальше...

Ещё один костыль — тупо сохранять время, права, владельца и прочее в какую-нибудь SQLite, или вообще в текстовый файлик. Не руками, конечно, а скрипт копирования сделать, который сохраняет, а потом заливает файлы на ЯД. И, соответственно, наоборот — выкачивает файлы и сразу к ним применяет сохранённые атрибуты. Так не будет тормозов, но это тоже костыль, и придётся ещё этот текстовый или .db файлик хранить локально и/или на том же ЯД рядом с остальным. Ну и два небольших скрипта наваять.

Пруфлинк на такой костыль? А от балды такое сказать и я могу, но это сделать надо.

n0mad ★★★
() автор топика
Ответ на: комментарий от Jullyfish

Есть time – бинарник, есть time – ключевое слово в bash. Попробуйте просто:

Я это знаю и понимаю, но у каждого свои тараканы. Я предпочитаю сохранять отчёты в файл, потому что в консольках часто теряю. Встроенный time - не умеет сохранять отчёт в файл. Теоретически конечно его можно запайпить в ти... Но ну его нафиг...

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

Стоимость VPS с 2Т диском? А VPN и использование её как сетевого хранилища файлов разрешено? По факту или цена заоблачная или ничего не разрешено.

У многих хостеров это делается так: отдельно покупается VPS с малым количеством места, а затем к нему докупается место. Ну и обычно всё разрешено. Иногда торренты запрещают.

Вы поняли что написали? Я про ЛОКАЛЬНОЕ МОНТИРОВАНИЕ! Почему оно должно люто тормозить?

Что я написал, я понял. Возможно не понял, что вы до этого написали. Люто тормозить будет, если примонтировать ЯД, на котором лежит файл, в котором шифрованная ФС, и эту ФС тоже примонтировать. У меня сложилось впечатление, что именно так вы и сделали, и из-за этого тормоза.

Если у вас локально тормозит, то я не знаю, почему. Можно просто обычную ext4 какую-нибудь в файле создать и не париться, без шифрования. Так точно тормозить не будет. Или даже Btrfs.

Каким образом? Ежедневно тарить и заливать на ЯД?

Да. Ну не обязательно именно ежедневно, можно и два раза в день, или два раза в неделю. В зависимости от того, что нужно.

Блин, да мне тупо надо ~/bin залить на облако и на КАЖДОМ моём хосте смонтировать в ~/bin, чтобы везде я мог скзать скажем: jpeg2time и она выдернула из всех ЖПЕГов EXIFы и засунула из них время во время модификации файла!

Именно на ЛЮБОМ хосте, а не держать везде актуальную копию этого ~/bin

Если у вас ~/bin 2 ТБ, то вы явно что-то делаете не так. Если нет, то для таких нужд подходит самая дешёвая VPS в том числе. А под большие данные отдельно можно взять облако, где подобное не требуется.

Именно, но я не хочу за это платить 5к/мес, хочу 2.5к/год!

Ну значит придётся изворачиваться с костылями разной степени костыльности.

Не смеши мои коленки… Посмотри сколько стоит VPS с диском на 2Т, и можно ли из него устраивать ВПН? Самый дешевый ВПС - имеет диск, дай Боже 10Гб. и за это надо платить 500р/мес=6т/год.

Это не самый дешёвый. Самые дешёвые (да, с 10 ГБ) обычно $2/мес. Ну вот тут например: https://buyvm.net/kvm-dedicated-server-slices/

И да, я не знаю, где запрещают VPN. Обычно на любом VPS можно спокойно поднимать VPN.

Вообще не думал что облака так сосут…

Это мы уже выяснили ещё в прошлой теме вроде. Теперь-то знаешь.

Это словоблудие, и не больше. Это я и так понимаю.

Это не словоблудие, это ответы на твои вопросы. Одновременно «дёшево, без костылей, быстро, удобно, много места» — не получится. Придётся какими-то из этих пожеланий пожертвовать. Какие именно есть варианты — я тоже уже предлагал выше. Если использовать более подходящий, но дорогой инструмент не вариант, то можно: не постоянно синхронизировать, а тарить периодически, можно сделать ФС в файле, можно хранить нужную информацию об атрибутах файла в текстовом файлике или БД. Возможно, есть ещё какие-то варианты, и эти решат проблему.

Ну если ЯД сосёт - значит они потеряют клиента, и пусть сосут дальше…

У тебя то как обложить ЯД костылями, «всё равно его не брошу, потому что 2500 в год», то потеряют клиента. Ты определись что ли… :)

Пруфлинк на такой костыль? А от балды такое сказать и я могу, но это сделать надо.

Какой пруфлинк, на что? За тебя два скрипта написать? Давай-ка или сам, или в Job. Ну или если у самого почему-то не получается, задавай конкретные вопросы, что именно не получается. Писать там, конечно, немного, но мне лень. В основном лень из-за того, что я не пользуюсь ЯД и не смогу нормально протестировать. А подключать совсем лень.

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

Ну вот вам всё будет в файле LOG:

$ { time cd /path/to/yandex/disk; } 2> LOG

Можно естественно и в конец файла добавлять 2>>.

Можно даже временные метки добавить. :)

$ date >> LOG && { time cd /path/to/yandex/disk; } 2>> LOG
Jullyfish
()