Как запустить скрипт, как будто он работает при начальной загрузке?

Просто сделайте

ls -ltr `grep -il patterntosearch  *`
4
09.10.2014, 01:21
3 ответа

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

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

-121--89433-

Можно запустить как root

env - scriptname

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

env -i/bin/sh -c scriptname

После этого сценарий будет запущен с помощью /bin/sh . Однако это не будет полностью имитировать загрузочную среду, так как это не считается для других служб, которые могут не работать в то время.

Я нашел аналогичный вопрос для моделирования среды crontab, и есть очень полезное решение, размещенное mmccoo .

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

часть сценария ботинка:

ENV>/var/tmp/bootenv

Тогда в нормальном времени выполнения, чтобы установить ту же окружающую среду ботинка, сделайте это:

env - `cat /var/tmp/bootenv` /bin/sh -c scriptname
4
27.01.2020, 20:58

Я отвечу сам. Это может быть полезно кому-то.

Docker использовал драйвер места хранения «aufs» в старом ядре. Поэтому необходимо загрузить модуль «aufs.ko». В новом ядре поддержка aufs не была включена и docker начал использовать драйвер места хранения «devicemapper».

-121--244813-

Другой вариант - использовать lsblk -f :

lsblk перечисляет информацию обо всех доступных или указанных блочных устройствах.

Это означает, что сетевые общие ресурсы (nfs, sshfs) или виртуальные файловые системы (dev, run, sys, proc et al) не отображаются . Кроме того, появится файловая система tmpfs , которая обычно показана в df -h , не .

Опция -f выводит информацию о файловых системах, которая включает точку установки .

На моем компьютере, например, перечислены:

NAME    FSTYPE          LABEL       UUID                                 MOUNTPOINT
sda                                                                      
|-sda1  ext2            bootpar     ab2e48a8-5f1c-484e-a4a1-f8545e4b2019 /boot
|-sda2  swap            swappar     6e9f6e70-141a-417c-82a5-113a3d4c5a53 [SWAP]
`-sda3  ext4            homepar     52f7164d-fac7-4abe-bf78-71353fac7850 /home
sdb     isw_raid_member                                                  
`-md126 ext4            rootparraid 4275f5ba-8244-4039-9100-06afee678557 /
sdc     isw_raid_member                                                  
`-md126 ext4            rootparraid 4275f5ba-8244-4039-9100-06afee678557 /
sr0                                                                      
-121--100671-

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

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

-1
27.01.2020, 20:58

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

  • Программа наследует многие переменные среды (в том числе PATH , Главная , ...).
  • Программа наследует несколько файловых дескрипторов, включая терминал.
  • Пределы могут быть разными.

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

env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin myprogram </dev/null >/dev/null 2>/dev/null

Проверьте INIT человек страница или другая документация по вашей системе, чтобы увидеть, какие переменные окружения определяет Отказ Многие программы, предназначенные для пробега в качестве демонов, понадобится Путь и ничего другого. Вышеупомянутое значение - значение по умолчанию для init на Debian.

0
27.01.2020, 20:58

Теги

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