Как папки, созданные в / var /, запускаются при каждой перезагрузке

Установка CUDA немного сложнее. Я выполнил следующие шаги, и это работает для меня. Вы также можете обратиться к этой ссылке .

Подтверждение среды:

  1. lspci | grep -i nvidia (Убедитесь, что отображается информация о плате NVIDIA)

  2. uname -m ( убедитесь, что это x86_64)

  3. gcc --version (убедитесь, что оно установлено)

Установка CUDA -

[ 1139]

  • Скачать файл cuda_7.5.18_linux.run с https://developer.nvidia.com/cuda-downloads

  • Выполнить следующие команды:

    sudo apt-get install build-essential
    echo blacklist nouveau option nouveau modeset=0 |sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf 
    sudo update-initramfs -u
    
  • Перезагрузка компьютера

  • На экране входа нажмите Ctrl kbd> + Alt kbd > + F1 kbd> и войдите в систему для вашего пользователя.

  • Перейдите в каталог, где находится драйвер CUDA, и выполните

    chmod a+x .
    sudo service lightdm stop
    sudo bash cuda-7.5.18_linux.run --no-opengl-libs
    
  • Во время установки:

    • Примите условия EULA [ 1162]
    • Скажи ДА для установки драйвера NVIDIA
    • Скажи ДА для установки драйвера CUDA Toolkit +
    • Скажи ДА для установки образцов CUDA
    • Скажи НЕТ для восстановления любой конфигурации Xserver с Nvidia
  • Проверьте, существуют ли файлы /dev/nvidia*. Если это не так, сделайте следующее

    sudo modprobe nvidia
    
  • Установите переменные пути среды

    export PATH=/usr/local/cuda-7.5/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
    
  • Проверьте версию драйвера

    cat /proc/driver/nvidia/version`
    
  • Проверьте версию драйвера CUDA

    nvcc –V
    
  • Снова включите lightdm

    sudo service lightdm start
    
  • [ 1157] Ctrl kbd> + Alt kbd> + F7 kbd> и войти в систему через графический интерфейс

  • Создать примеры CUDA , Перейдите в папку NVIDIA_CUDA-7.5_Samples через терминал, затем выполните следующую команду:

    make
    cd bin/x86_64/linux/release/
    ./deviceQuery
    ./bandwidthTest
    

    Оба теста должны в конечном итоге вывести «PASS» в терминале

  • Перезагрузить систему

    1. 60
      задан 16.05.2020, 23:12

      6 ответов

      (Спасибо @Zulakis и за ответ на Serverfault за то, что он указал, что этот ответ не поспевает за продолжающимся развитием Ubuntu.)

      С принятием systemd по состоянию на 15.04 , теперь существует централизованный механизм для создания временных файлов и каталогов, подобных этим. Служба, желающая использовать этот метод, может удалить команды mkdir в своем собственном сценарии запуска и вместо этого поместить файл .conf в /etc/tmpfiles.d, /run/tmpfiles.d или /usr/lib/tmpfiles.d, при этом службы Ubuntu предпочитают последний вариант. Например, моя система теперь имеет:

      $ egrep -r /var/run /usr/lib/tmpfiles.d
      
      /usr/lib/tmpfiles.d/var.conf:L /var/run - - - - ../run
      /usr/lib/tmpfiles.d/sudo.conf:d /var/run/sudo 0711 root root
      /usr/lib/tmpfiles.d/sudo.conf:D /var/run/sudo/ts 0700 root root
      /usr/lib/tmpfiles.d/postgresql.conf:d /var/run/postgresql 2775 postgres postgres - -
      /usr/lib/tmpfiles.d/sshd.conf:d /var/run/sshd 0755 root root
      /usr/lib/tmpfiles.d/screen-cleanup.conf:d /var/run/screen 0775 root utmp
      

      d означает создание каталога, если он еще не существует, после этого - путь, а остальные - разрешения, пользователь и группа. Эти каталоги будут созданы независимо от того, запущена ли соответствующая служба.

      Для полной документации см. man tmpfiles.d .


      СТАРЫЙ ПРЕД-СИСТЕМНЫЙ ОТВЕТ:

      Похоже, что они динамически создаются отдельными службами при запуске:

      $ sudo egrep -r 'mkdir.*/var/run' /etc
      
      /etc/init.d/ssh:        mkdir /var/run/sshd
      /etc/init.d/bind9:      mkdir -p /var/run/named
      /etc/init.d/timidity:    mkdir -p /var/run/timidity
      /etc/init.d/bzflag:                mkdir -p /var/run/bzflag
      /etc/init.d/dns-clean:mkdir /var/run/pppconfig >/dev/null 2>&1 || true
      /etc/init/winbind.conf: mkdir -p /var/run/samba/winbindd_privileged
      /etc/init/dbus.conf:    mkdir -p /var/run/dbus
      /etc/init/ssh.conf:    mkdir -p -m0755 /var/run/sshd
      /etc/init/libvirt-bin.conf:     mkdir -p /var/run/libvirt
      /etc/init/cups.conf:    mkdir -p /var/run/cups/certs
      

      Я считаю, что это тот, который обрабатывает mysqld:

      [ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
      /lib/init/apparmor-profile-load usr.sbin.mysqld
      

      man install говорит, что форма -d «создаст все компоненты указанных каталогов».

      82
      ответ дан 16.05.2020, 23:16
      • 1
        Спасибо, @Zulakis. Я сделал некоторые редактирования и буду ценить знание ли they' ре, корректное на основе Вашего опыта с этой функцией. – Sergey Berezovskiy 16.05.2020, 23:16
      • 2
        Взгляды, хорошие мне! Спасибо за обновление Вашего ответа:) – Gert Arnold 16.05.2020, 23:16
      • 3
        Upvote для egrep-r команда. Поиск поиска в рамках поиска файла!:-) – Michael Stramel 16.05.2020, 23:17
      • 4
        Это, не всегда кажется, имеет место: serverfault.com/questions/824393/… – Raphaël Althaus 16.05.2020, 23:17

      Для всех, кто сталкивался с этой темой, потому что вы ищете решение о том, как вы можете настроить приложение так, чтобы оно создавало каталог в /var/run, чтобы оно могло хранить свой файл носка или pid или что-то еще… вот пример , Я наткнулся на эту тему, потому что я хотел сохранить файл носка MySQL в /var/run/mysqld. Итак, после того, как я наткнулся на эту тему, я начал искать в файлах /etc/init примеры. дбус был хорошим. И я придумал эту конфигурацию запуска mysql:

      start on runlevel [2345] 
      stop on runlevel [!2345] 
      expect daemon 
      
      pre-start script 
          mkdir -p -m0755 /var/run/mysqld 
          chown mysql:mysql /var/run/mysqld 
      end script 
      
      exec /etc/init.d/mysql start 
      pre-stop exec /etc/init.d/mysql stop 
      

      Предварительная часть скрипта сделала свое дело.

      5
      ответ дан 16.05.2020, 23:13

      douggro абсолютно прав, / var / run монтируется как tmpfs, а / var / run является символической ссылкой на / run, которая постоянна при перезагрузках, поэтому все, что входит / запускается, также появляется (и остается) /var/run.

      Так что любые загрузочные сервисы, такие как mysqld, который является демоном, запускаемым во время загрузки, который создает файлы в / run, также будут иметь файлы, видимые в / var / run (символическая ссылка на / run запомнить). Если вы хотите создать файл, который будет сохраняться после перезагрузки в / var / run, создайте его в / run и затем перезагрузите.

      Надеюсь, это ответит на ваш вопрос.

      -2
      ответ дан 16.05.2020, 23:13
      • 1
        " Если Вы хотите создать файл, который сохранится через перезагрузку в/var/run, создать его в выполненном / и затем перезагрузка " Это не корректно. tmpfs энергозависимо, и изменения потеряны. – CiccioMiami 16.05.2020, 23:13
      • 2
        You' ре оба ошибающиеся, или использование нестандартных установок. Проверьте на себя. смонтируйтесь | grep / выполненный.... tmpfs на / выполненный тип tmpfs – Shell 16.05.2020, 23:14

      Тем не менее, я вижу там несколько папок, например / var / run / mysqld и многие другие. Как эти папки создаются при каждой перезагрузке? Есть ли какая-нибудь папка с шаблоном, которая была скопирована в / var / run / (и если да, какой скрипт это делает), или каждая папка mkdired отдельно, или что?

      Как определено в Стандарт файловой иерархии , /var/run или /run используется для хранения изменчивых данных времени выполнения.

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

      Обычно для использования папки /run хранится pid запущенных демонов, файлов маркеров, которые содержат номер процесса. Они в основном используются для сценариев запуска / остановки, которые вы можете найти, например, в /etc/init.d/

      . Надеюсь, вы прояснили это!

      br

      2
      ответ дан 16.05.2020, 23:13

      Ваше предположение не совсем верно. Местоположение папки /var является договорным, то есть вы можете использовать альтернативный раздел или том, на котором можно найти папку /var. Независимо от того, где находится папка /var, папка /var/run является символической ссылкой на папку /run, и ее содержимое остается после перезагрузок, хотя многие файлы в /run создаются или изменяются при загрузке службами, запускающимися во время загрузки. Таким образом, именно службы, такие как mysqld, вызывают загрузку файлов в каталог /var/run и предназначены для создания подкаталогов, если их в данный момент не существует.

      1
      ответ дан 16.05.2020, 23:14
      • 1
        Также посмотрите здесь, что/var/run является действительно tmpfs askubuntu.com/questions/57297/… – Community 16.05.2020, 23:14
      • 2
        Я создал некоторые папки в/var/run, и они исчезли после перезагрузки. (конкретно на 12,04) – drzounds 16.05.2020, 23:15

      Новая папка /run, смонтированная на tmpfs, позволяет таким программам, как udev, lvm и mdadm, сохранять данные времени выполнения от initrd до завершения работы.

      /var является стандартным каталогом любой системы Linux / UNIX - он обозначает «переменная» и является местом, где хранится множество журналов, файлов, НО, также программные файлы настроек переменных и даже некоторые базы данных конфигурации системы. [ 119]

      Большинство вещей в /var должны быть должным образом очищены и отрегулированы системой. Ваши файлы подкачки для виртуальной памяти также живут в /var, так что не связывайтесь с этим. /var/run также содержит много информации о состоянии и параметрах активно работающих демонов процессов.

      Этот каталог содержит данные системной информации, описывающие систему с момента ее загрузки. Файлы в этом каталоге должны быть очищены (удалены или усечены соответствующим образом) в начале процесса загрузки. Программы могут иметь подкаталог /var/run; это рекомендуется для программ, которые используют более одного файла времени выполнения.

      Хорошо, поскольку /var/run смонтирован как tmpfs. Это означает, что когда ваша машина загружается, она полностью пуста и должна быть такой, чтобы предотвратить запуск таких вещей, как демоны, из-за оставшегося PID-файла.

      Скрипты запуска обычно создают нужные им каталоги перед их использованием. Если вы хотите сохранить PID-файл, либо поместите его в /var/run напрямую, либо создайте каталог перед созданием PID-файла. Здесь не место для хранения данных, которые должны оставаться там при перезагрузках.

      Источники: Pathname & amp; Руководство системного администратора Linux

      5
      ответ дан 16.05.2020, 23:15

      Теги

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