Создание «одометра» для времени, проведенного на сервере - PullRequest
4 голосов
/ 06 ноября 2011

Я хочу построить одометр , чтобы отслеживать, сколько времени я провел на сервере с момента последней перезагрузки счетчика.

В последнее время я довольно много времени работаю на одном из Unix-серверов моей школы и начинаю задумываться, сколько времени я провел за последние пару дней. Я начал пытаться придумать, как мне написать сценарий Bash или программу на C для запуска при загрузке моего .bash_profile (т. Е. Когда я ssh на сервер), сам фон и сохранить время в файле, когда я закрыл сессию.

Я знаю, как заставить программу работать при входе в систему (через .bash_profile) и как создать фоновую программу на C (путем разветвления?), Но я не уверен, как определить, что сеанс ssh был завершен (возможно, наблюдая за процессом sshd?) Я надеюсь, что это правильный обмен стека, чтобы спросить, как бы вы поступили примерно так, и оценить любой вклад.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

В зависимости от вашей оболочки вы можете просто вызывать процесс в фоновом режиме при входе в систему, а затем обрабатывать сигнал уничтожения при выходе из родительского процесса (оболочки).Он не потребляет ресурсы, вам не потребуются привилегии суперпользователя, и он должен давать довольно точный отчет о вашем времени входа в систему.

Возможно, вам понадобится использовать семафоры POSIX для обработки случая, когда регистрируется несколько оболочекодновременно.

1 голос
/ 06 ноября 2011

Рассматривали ли вы написание сценария, который может запускаться cron каждую минуту, запуск "кто", просмотр его выходных данных на наличие строк с вашим идентификатором uid и увеличение счетчика, если он его найдет?(Используйте «crontab -e» для редактирования вашего crontab.)

Даже просто строка в crontab, такая как:

* * * * * (date; who | grep $LOGNAME)>>$HOME/.whodata

... создаст журнал, который вы сможете обработать позже на вашемотдых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...