10

Я запускаю файловый сервер linux для своего офиса, и мы используем SFTP для удаленных партнеров для входа и загрузки файлов. Есть ли способ узнать, есть ли какие-либо активные соединения или логины, чтобы я мог знать, когда безопасно выполнять техническое обслуживание на машине?

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

3 ответа3

11

Вы также можете сделать:

ps -ef | grep '[s]shd' | grep -v ^root

который должен показывать любые сессии sshd (которые используются для sftp). Я заметил, что на моей машине моя командная строка sshd-процесса содержит «$ USER @ notty», что имеет смысл, поскольку я не вошел в систему с терминальной сессией. Вы могли бы затянуть вышеупомянутый grep:

ps -ef | grep '[s]shd:.*@notty' | grep -v ^root

Кстати: квадратные скобки в grep не должны отображать процесс 'grep sshd' в списке процессов. [s] shd соответствует sshd, но не соответствует самому себе. Сохраняет «grep -v grep»

1

Я думаю, что вы можете использовать программу командной строки who чтобы увидеть это. Я заметил некоторые сообщения, что это не работает, но я все еще думаю, что это может работать (возможно, это настройка ssh).

sftp построен поверх SSH. Он обозначает "Протокол передачи файлов SSH". И когда вы вошли в систему через ssh, 'who' включит вас как зарегистрированного пользователя со своими выходными данными. Так что я ожидаю, что это будет работать и с активными сессиями sftp.

Это обсуждение 2008 года также предполагает, что вы можете использовать для этого «netstat». Он также содержит предложение запустить «кто» через «часы», чтобы вы могли видеть обновления, ничего не делая.

1

Вы также можете попробовать fuser -u ssh/tcp

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .