Возвращает ли clock() процесс или общие системные часы?

Я ответил на этот же вопрос в другой ветке здесь:

Изменить домашний каталог для пользователя LDAP в Linux

Впрочем, отвечу и здесь...

Я знаю, что эта тема устарела. Однако я наткнулся на это, пытаясь сделать то же самое в CentOS 7. Я думаю, что процесс такой же. Мне нужно было изменить каталоги нескольких пользователей с /home/USERна /home/ldap-users/USER.

Сначала создайте файл ldif с изменениями, которые вы хотите внести. Я назвал свой changehomedirs.ldif. Возможно, вам придется изменить свое подразделение в зависимости от того, в какое организационное подразделение вы помещаете своих пользователей. Я позвонил своим людям.

Затем я написал сценарий, по существу циклически перебирающий каждого пользователя LDAP по одному, и использовал sed для замены слова USER в файле changehomedirs.ldifна текущего пользователя в цикле и перенаправления вывода во временный файл с именем tmp..ldif.

Затем я использовал команду ldapmodify, чтобы внести изменения, используя опцию -f, чтобы прочитать нужные изменения из файла tmp.ldif. Пример на скриншоте ниже.

Это всего лишь тестовая система, поэтому пароль по своей природе не является конфиденциальным.

Home dirs before LDAP modification

How to change a users home directory in LDAP

Home dirs after LDAP modification

0
22.10.2019, 01:25
1 ответ

Вы не упомянули, поэтому я предполагаю, что вы спрашиваете конкретно о Linux.

Изman 3 clock:

The value returned is the CPU time used so far as a clock_t; to get the number of seconds used, divide by CLOCKS_PER_SEC.

То есть часы относятся только к процессорному времени. Если вы хотите провести время на стене, вы можете:

  • Проверьте поле времени начала /proc/.../statс чем-то эквивалентным awk -v RS=\) '{ print $20 }' /proc/.../stat, которое содержит время начала процесса в тактах с момента загрузки. Затем вы можете сравнить текущее время безотказной работы с sysinfo(), чтобы определить, сколько времени прошло с момента запуска процесса (, хотя, что раздражает, вам нужно затем преобразовать время безотказной работы в часы, разделив его наCLK_TCK). Или,
  • Используйте clock_gettimeс CLOCK_MONOTONIC, хотя это отличается от clockAPI. Во-первых, вам явно нужно вызвать clock_gettimeв начале и сохранить результат, используя его для сравнения (, хотя вы можете уже сделать это, в зависимости от того, как вы используетеclock). Вы также должны согласиться с тем, что это time_tвместо clock_t, хотя вы можете вернуться, используя CLK_TCK.
1
28.01.2020, 02:39

Теги

Похожие вопросы