GNU/Linux >> Znalost Linux >  >> Linux

Jak najít všechna sériová zařízení (ttyS, ttyUSB, ..) v Linuxu bez jejich otevření?

V nedávných jádrech (nejsem si jistý odkdy) můžete vypsat obsah /dev/serial a získat tak seznam sériových portů ve vašem systému. Jsou to vlastně symbolické odkazy ukazující na správný uzel /dev/:

[email protected]:~$ ls /dev/serial/
total 0
drwxr-xr-x 2 root root 60 2011-07-20 17:12 by-id/
drwxr-xr-x 2 root root 60 2011-07-20 17:12 by-path/
[email protected]:~$ ls /dev/serial/by-id/
total 0
lrwxrwxrwx 1 root root 13 2011-07-20 17:12 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -> ../../ttyUSB0
[email protected]:~$ ls /dev/serial/by-path/
total 0
lrwxrwxrwx 1 root root 13 2011-07-20 17:12 pci-0000:00:0b.0-usb-0:3:1.0-port0 -> ../../ttyUSB0

Toto je USB-Serial adaptér, jak můžete vidět. Všimněte si, že pokud v systému nejsou žádné sériové porty, adresář /dev/serial/ neexistuje. Doufám, že to pomůže :).


/sys souborový systém by měl obsahovat spoustu informací pro váš úkol. Můj systém (2.6.32-40-generic #87-Ubuntu) navrhuje:

/sys/class/tty

Což vám dává popis všech zařízení TTY známých systému. Zkrácený příklad:

# ll /sys/class/tty/ttyUSB*
lrwxrwxrwx 1 root root 0 2012-03-28 20:43 /sys/class/tty/ttyUSB0 -> ../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/ttyUSB0/tty/ttyUSB0/
lrwxrwxrwx 1 root root 0 2012-03-28 20:44 /sys/class/tty/ttyUSB1 -> ../../devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/ttyUSB1/tty/ttyUSB1/

Po jednom z těchto odkazů:

# ll /sys/class/tty/ttyUSB0/
insgesamt 0
drwxr-xr-x 3 root root    0 2012-03-28 20:43 ./
drwxr-xr-x 3 root root    0 2012-03-28 20:43 ../
-r--r--r-- 1 root root 4096 2012-03-28 20:49 dev
lrwxrwxrwx 1 root root    0 2012-03-28 20:43 device -> ../../../ttyUSB0/
drwxr-xr-x 2 root root    0 2012-03-28 20:49 power/
lrwxrwxrwx 1 root root    0 2012-03-28 20:43 subsystem -> ../../../../../../../../../../class/tty/
-rw-r--r-- 1 root root 4096 2012-03-28 20:43 uevent

Zde je dev soubor obsahuje tyto informace:

# cat /sys/class/tty/ttyUSB0/dev
188:0

Toto je hlavní/vedlejší uzel. Ty lze vyhledávat v /dev adresář pro získání uživatelsky přívětivých jmen:

# ll -R /dev |grep "188, *0"
crw-rw----   1 root dialout 188,   0 2012-03-28 20:44 ttyUSB0

/sys/class/tty dir obsahuje všechna zařízení TTY, ale možná budete chtít vyloučit ty otravné virtuální terminály a pseudo terminály. Doporučuji zkoumat pouze ty, které mají device/driver záznam:

# ll /sys/class/tty/*/device/driver
lrwxrwxrwx 1 root root 0 2012-03-28 19:07 /sys/class/tty/ttyS0/device/driver -> ../../../bus/pnp/drivers/serial/
lrwxrwxrwx 1 root root 0 2012-03-28 19:07 /sys/class/tty/ttyS1/device/driver -> ../../../bus/pnp/drivers/serial/
lrwxrwxrwx 1 root root 0 2012-03-28 19:07 /sys/class/tty/ttyS2/device/driver -> ../../../bus/platform/drivers/serial8250/
lrwxrwxrwx 1 root root 0 2012-03-28 19:07 /sys/class/tty/ttyS3/device/driver -> ../../../bus/platform/drivers/serial8250/
lrwxrwxrwx 1 root root 0 2012-03-28 20:43 /sys/class/tty/ttyUSB0/device/driver -> ../../../../../../../../bus/usb-serial/drivers/ftdi_sio/
lrwxrwxrwx 1 root root 0 2012-03-28 21:15 /sys/class/tty/ttyUSB1/device/driver -> ../../../../../../../../bus/usb-serial/drivers/ftdi_sio/

Linux
  1. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  2. Jak vypsat nebo seřadit všechny soubory podle velikosti v Linuxu

  3. Jak najít všechny soubory větší než 1 GB v Linuxu?

  1. Jak najít využití souborového systému Inode v Linuxu

  2. Jak najít všechny soubory končící na .rb s Linuxem?

  3. gzip všechny soubory bez jejich smazání

  1. Jak najít všechny uživatele Sudo v Linuxu

  2. Linux – Jak se Gnome restartuje bez oprávnění root?

  3. Linux – Jak najít procesy pomocí sériového portu?