Как я могу проверить работу `nice`?

В отношении Вашего обновления:

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

MEMORY
argc    2
argv[0] program_name
argv[1] foo
argv[2] bar

Проверка MySQL, если пароль был передан командной строке -p, и если это была копия это к новой переменной, которая не видима, затем перезапишите тот регион памяти с x'es.

Простыми словами, например:

argc 2
argv[1] -p
argv[2] p4ssw0rd

new_var = copy(argv[2]);
argv[2] = "xxxxx";

Можно найти его, например, в client/mysqladmin.cc из исходного кода:

  case 'p':
      ...
      opt_password=my_strdup(argument,MYF(MY_FAE));
      while (*argument) 
          *argument++= 'x';     /* Destroy argument */

Когда ps работайте это читает регион памяти аргументов, (argv[N]), и таким образом это xxxx.

В течение очень короткого времени пароль видим, но только для нескольких циклов ЦП.


Можно обновить пароль MySQL с помощью специального предложения --init-file опция и процедура. C.5.4.1.2. Изменение Пароля root: Системы Unix

mysqld_safe --init-file=/home/me/mysql-init &

Править:

Как @Gilles говорят, Вы можете echo, printf или используйте here документ из сценария.

Можно также добавить это к .my.cnf из Вашего корневого каталога или во (временном) файле и использовании --defaults-extra-file опция. (Полагайте, что необходимо добавить что опция рано на командной строке.) дополнительно также включают пользователя. Также отметьте дополнительное на имя опции, если Вы не хотите использовать только что файл как конфигурация:

[client]
user=foo
password='password!'
shell> chmod 400 my_tmp.cnf
shell> mysql --defaults-extra-file=my_tmp.conf -...

Дополнительно [client] группировка делает mysqld пропустите конфигурацию.

Можно также использовать MYSQL_PWD переменная среды, но это никогда не должно использоваться, поскольку можно перечислить среду во многих ps реализации ps -e, в /proc//environ файл на Linux и т.д.

tr '\0' '\n' < /proc//environ

Больше по теме здесь.

Вы могли бы также хотеть взглянуть на MySQL Configuration Utility, который позволяет Вам сохранить пароль в зашифрованном файле в Вашем корневом каталоге – .mylogin.cnf.

5
13.04.2017, 15:36
3 ответа

10 минут - это очень долгое время для планировщика Linux. Срезы времени примерно 10 мс.

Когда вы смотрите на процент использования процессора, имейте в виду, что top суммирует использование многопоточных процессов в расчете на один поток. Таким образом, 10-поточный процесс, в котором каждый поток получает 10% активного времени, будет отображаться как использующий 100% центрального процессора.

Планировщик Linux не будет морить голодом хорошую 19 задачу (потому что ошибок дедлока трудно избежать, если процесс может быть спущен навсегда), поэтому даже хороший 19 не остановит задачу от получения некоторого процессорного времени. Если в ней много потоков, она все равно может использовать значительные ресурсы процессора.

Если некоторые процессы блокируют ввод/вывод, особенно пейджинг виртуальной памяти, то их использование процессора % пойдет на спад. Запустите что-нибудь вроде dstat, чтобы увидеть поломки использования процессора, диска, сети, пейджинга и контекстных переключателей. Это похоже на vmstat, но окрашено и красивее.

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

Если вы использовали renice, помните, что это не рекурсивный. репетиторство родительского процесса не повлияет на существующие дочерние процессы, а только на будущих дочерние процессы.

1
27.01.2020, 20:35

Многие процессы в вашей системе просто сидят и ждут, чтобы что-то произошло. Это то, что делают большинство серверных процессоров или демонов (например, ssh, mail, X).

Если вы работаете в текстовом редакторе, он просто сидит и ждет, пока вы не нажмете где-нибудь или что-нибудь напечатаете. В большинстве случаев процесс не запланирован и использует очень мало процессорного времени. Вы можете установить для этого процесса значение nice-value равным нулю, и это не будет иметь заметного эффекта.

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

Процессы с общими ресурсами сталкиваются с другой проблемой: разделяемые ресурсы. Им часто придется ждать ресурс, пока его использует другой процесс.

Жесткий диск является одним из примеров. Если процесс запускает операцию жесткого диска (например, чтение или запись файла), он будет приостановлен системой до завершения операции. Даже нулевое значение nice вам здесь не поможет. Пока процесс приостановлен, он не будет использовать процессорное время.

Эффект красиво может быть очень слабым; -)

3
27.01.2020, 20:35

Оказывается ftdi_sio это неверный драйвер, я должен использовать pl2303. Все решали следующие задачи:

modprobe pl2303

И устройство правильно смонтировано и настроено.

-121--229122-
bash-4.3$ ps -j | cat
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4600  4600  4586 pts/1    00:00:00 ps
 4601  4600  4586 pts/1    00:00:00 cat
bash-4.3$ ps -j; ps -j
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4602  4602  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4603  4603  4586 pts/1    00:00:00 ps

Задание интерактивной оболочки встроено в группу процессов. Именно для этого были созданы группы процессов: выполните задания интерактивной оболочки. Интерактивные оболочки представляют собой единственные команды, которые фактически объединяются с группами процессов.

Выше ps -j | cat указано задание (основное). Как ps , так и cat находятся в одной группе процессов, оболочка делает их основной группой процессов терминала, так что ^ C вызывает отправку им SIGINT.

Во втором примере два последовательных задания.

В

bash-4.3$ (ps -j; ps -j)
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4634  4633  4586 pts/1    00:00:00 ps
  PID  PGID   SID TTY          TIME CMD
 4586  4586  4586 pts/1    00:00:00 bash
 4633  4633  4586 pts/1    00:00:00 bash
 4635  4633  4586 pts/1    00:00:00 ps

субоболочка представляет собой одно задание. Сам подслой можно рассматривать как неинтерактивную оболочку.

-121--166443-

Хорошее значение не расскажет вам ничего о фактической нагрузке процессора, который производит процесс.

Nice-ness это как раз то, что вы думаете: как, процесс ведет себя при определенных рабочих нагрузках.

Чтобы быть более точным:

  • если запланирован процесс с высоким хорошим значением (= = более низкая возможность планирования), он БУДЕТ удерживать ЦП, пока процесс с более низким хорошим значением и/или более высоким приоритетом не запросит ЦП и МОЖЕТ создать 100% нагрузку.

  • Если процесс с более низким значением (= = более высокая разрешающая способность планирования) освобождает ЦП, он, возможно, не использовал его на пике.

Вот почему вы видите процессы с более низким уровнем нагрузки, использующие меньше ЦП, чем процессы с более высоким уровнем нагрузки.

5
27.01.2020, 20:35

Теги

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