Оп здесь. Возможное решение взлома может быть похоже на
inotifywait -m "$dir" -e moved_to --timefmt='%s' --format '%T' | stdbuf -oL uniq |...
РЕДАКТИРОВАТЬ:См. мой другой ответ на этот вопрос, так как второй вариант ИМХО лучше
Это работает за счет того, что время, прошедшее с начала эпохи, печатается при каждом выполнении move_to
, что является последним этапом одиночной -передачи файла.
Это работает прилично, даже если процедура загрузки поста -может запускаться несколько раз, если одна загрузка длится более одной секунды.
Другую степень детализации можно получить, изменив флаг --timefmt
на другое значение.
Опубликовать это здесь как полу -достойную идею, хотя мне это не очень нравится... тем не менее, я подумал о том, чтобы поделиться ею.
ZSH просто работает таким образом./etc/profile
НЕ является файлом инициализации для ZSH . ZSH использует /etc/zprofile
и ~/.zprofile
.
Файлы инициализации для ZSH:
/etc/zshenv
~/.zshenv
/etc/zprofile
~/.zprofile
/etc/zshrc
~/.zshrc
/etc/zlogin
~/.zlogin
Советы:
Ссылки
sshd
запускает оболочку входа в систему, когда клиент не отправляет команду для запуска. Это должно имитировать поведение rsh
, которое вызывало службу rlogind
вместо службы rshd
, когда не было задано никакой команды для запуска.
Чтобы сообщить оболочке, что это должна быть оболочка входа в систему, например rlogind
, login
или telnetd
, sshd
запускает вашу оболочку с argv[0]
, которая начинается с -
.
Или, конечно, zsh
как и любая другая оболочка, понимает это. В противном случае его нельзя было бы вызвать в режиме входа в систему .
Здесь симптом, заставивший вас думать, что вы не получили оболочку входа в систему, заключался в том, что /etc/profile
не был интерпретирован.
/etc/profile
— это файл инициализации сеанса входа в систему для Bourne -, например для оболочек. Ожидается, что синтаксис там будет в синтаксисе оболочки Bourne (или, возможно, синтаксисе POSIX sh, поскольку оболочка Bourne почти никогда не используется в наши дни )и читается при входе в систему всеми оболочками, чей синтаксис (в основном )обратно совместим с синтаксисом Bourne или POSIX sh.
csh
и tcsh
, которые имеют совершенно другой синтаксис, вместо этого используют /etc/csh.login
. fish
использует/etc/fish/config.fish
(независимо от того, находится ли он в режиме входа в систему или нет ).
zsh
также не полностью совместим с синтаксисом Bourne/POSIX, поэтому по умолчанию он не читается /etc/profile
. Его файлы конфигурации в режиме входа в систему имеют вид/etc/zsh/zprofile
(или /etc/zprofile
в зависимости от того, как zsh
был настроен во время сборки )и/etc/zsh/zlogin
(или /etc/zlogin
), последний из которых получен после zshrc
.
zsh
исходит только из /etc/profile
в режиме эмуляции sh
или ksh
, и в этом случае его синтаксис намного ближе к синтаксису POSIX sh, чем в режиме эмуляции zsh
по умолчанию.
Если вы хотите, чтобы zsh
был источником /etc/profile
в режиме входа в систему, вам нужно добавить source /etc/profile
в /etc/zsh/zprofile
, но вы хотите сделать это только после того, как убедитесь, что синтаксис /etc/profile
и любой другой файл, из которого он исходит, совместим с файлом zsh
.
В качестве альтернативы,можно добавить:
emulate sh -c 'source /etc/profile'
- /etc/zsh/zprofile
. Тогда /etc/profile
будет использоваться в sh
режиме эмуляции (, а функции, объявленные в нем, также сохранят sh
режим эмуляции ).