В Upstart Intro, Cookbook и Best Practices имеется большое количество фрагментов кода, которые можно использовать при создании задач и заданий выскочки.
Раздел Upstart Intro, Cookbook и Best Practices поваренной книги говорит, что /etc/init/rc.conf будет запущен и вызовет /etc/init.d/rc. В свою очередь это в конечном итоге вызовет /etc/init.d/sendsigs. Итак, если вы start on starting rc, то ваша задача будет выполнена до rc (и сигнмеры, которые обычно завершат процесс).
file: /etc/init/test.conf
[ f1]
файл: /etc/init/test.sh
touch /media/sf_LinuxEducation/start
sleep 15
touch /media/sf_LinuxEducation/start-long
Я написал сценарий, чтобы показать, как я это сделаю:
#!/bin/bash
port="1-1.1" # as shown by lsusb -t: {bus}-{port}(-{subport})
bind_usb() {
echo "$1" >/sys/bus/usb/drivers/usb/bind
}
unbind_usb() {
echo "$1" >/sys/bus/usb/drivers/usb/unbind
}
unbind_usb "$port"
# sleep 1 # enable delay here
bind_usb "$port"
Сначала вам нужно получить номер шины и порта порта usb. Вы можете сделать это с помощью lsusb и любого устройства, которое вы узнаете на выходе lsusb, я использую Sandend pendrive здесь:
$ lsusb
Bus 001 Device 005: ID 04f2:b39a Chicony Electronics Co., Ltd
Bus 001 Device 112: ID 8087:07dc Intel Corp.
Bus 001 Device 019: ID 04d9:1603 Holtek Semiconductor, Inc. Keyboard
Bus 001 Device 018: ID 0424:2504 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 022: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 002: ID 8087:8000 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
|__ Port 1: Dev 22, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 2: Dev 18, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 19, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 1: Dev 19, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 7: Dev 112, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 7: Dev 112, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 8: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 8: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
На выходе lsusb вы получаете шину и номер устройства, затем выполните поиск этого устройства на выходе lsusb -t, чтобы получить номер шины и порта (иногда с подписями). Синтаксис:
1-2.3 # for Bus 1 Port 2 Subport 3 – strip leading zeroes!
Используйте это как port в скрипте. Теперь вам просто нужно сделать его исполняемым с помощью chmod +x /path/to/script и запустить его Sandisk :
sudo /path/to/script
Мне не нужен был один для моего pendrive, но это может быть необходимо для вы снова добавите задержку между повторным связыванием и привязкой, это то, о чем прокомментировала строка sleep 1, - вы можете поэкспериментировать со значениями, например sleep 0.5 в течение половины секунды.
Обратите внимание, что этот подход показывает, как отключить и снова включить определенный USB-порт, если вы хотите, чтобы определенное устройство было отключено и снова отскок, вам придется использовать тот же USB-порт для этого. Можно было бы придумать способ анализа синтаксиса lsusb для динамического получения номера шины и порта определенного устройства каждый раз при вызове сценария, это позволит вам использовать любой USB-порт, но я считаю, что это будет
Предложения, взятые из этой статьи блога linux.com.
Я написал сценарий, чтобы показать, как я это сделаю:
#!/bin/bash
port="1-1.1" # as shown by lsusb -t: {bus}-{port}(-{subport})
bind_usb() {
echo "$1" >/sys/bus/usb/drivers/usb/bind
}
unbind_usb() {
echo "$1" >/sys/bus/usb/drivers/usb/unbind
}
unbind_usb "$port"
# sleep 1 # enable delay here
bind_usb "$port"
Сначала вам нужно получить номер шины и порта порта usb. Вы можете сделать это с помощью lsusb и любого устройства, которое вы узнаете на выходе lsusb, я использую Sandend pendrive здесь:
$ lsusb
Bus 001 Device 005: ID 04f2:b39a Chicony Electronics Co., Ltd
Bus 001 Device 112: ID 8087:07dc Intel Corp.
Bus 001 Device 019: ID 04d9:1603 Holtek Semiconductor, Inc. Keyboard
Bus 001 Device 018: ID 0424:2504 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 022: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 002: ID 8087:8000 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb -t
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
|__ Port 1: Dev 22, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 2: Dev 18, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 19, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 1: Dev 19, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 7: Dev 112, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 7: Dev 112, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 8: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 8: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
На выходе lsusb вы получаете шину и номер устройства, затем выполните поиск этого устройства на выходе lsusb -t, чтобы получить номер шины и порта (иногда с подписями). Синтаксис:
1-2.3 # for Bus 1 Port 2 Subport 3 – strip leading zeroes!
Используйте это как port в скрипте. Теперь вам просто нужно сделать его исполняемым с помощью chmod +x /path/to/script и запустить его Sandisk :
sudo /path/to/script
Мне не нужен был один для моего pendrive, но это может быть необходимо для вы снова добавите задержку между повторным связыванием и привязкой, это то, о чем прокомментировала строка sleep 1, - вы можете поэкспериментировать со значениями, например sleep 0.5 в течение половины секунды.
Обратите внимание, что этот подход показывает, как отключить и снова включить определенный USB-порт, если вы хотите, чтобы определенное устройство было отключено и снова отскок, вам придется использовать тот же USB-порт для этого. Можно было бы придумать способ анализа синтаксиса lsusb для динамического получения номера шины и порта определенного устройства каждый раз при вызове сценария, это позволит вам использовать любой USB-порт, но я считаю, что это будет
Предложения, взятые из этой статьи блога linux.com.