GNU/Linux >> Linux の 問題 >  >> Linux

Linuxですべてのシリアルデバイス(ttyS、ttyUSBなど)を開かずに見つける方法は?

最近のカーネル (いつからかは不明) では、 /dev/serial の内容を一覧表示して、システムのシリアル ポートの一覧を取得できます。これらは実際には、正しい /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

ご覧のとおり、これは USB-シリアル アダプタです。システムにシリアル ポートがない場合、/dev/serial/ ディレクトリは存在しないことに注意してください。これが役に立てば幸いです:)


/sys ファイルシステムには、クエストに関する十分な情報が含まれている必要があります。私のシステム (2.6.32-40-generic #87-Ubuntu) は次のように提案しています:

/sys/class/tty

これにより、システムが認識しているすべての TTY デバイスの説明が得られます。縮小した例:

# 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/

次のいずれかのリンクをたどります:

# 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

ここで dev ファイルには次の情報が含まれています:

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

これはメジャー/マイナー ノードです。これらは /dev で検索できます わかりやすい名前を取得するディレクトリ:

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

/sys/class/tty dir にはすべての TTY デバイスが含まれていますが、厄介な仮想端末と疑似端末を除外したい場合があります。 device/driver を持つものだけを調べることをお勧めします エントリ:

# 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. Linuxで開いているすべてのポートのリストを見つける方法

  2. Linuxですべてのディレクトリのファイルを再帰的に検索する方法

  3. Linuxですべてのファイルをサイズ別に一覧表示または並べ替える方法

  1. Linux – Gnomeはルート権限なしでどのように再起動しますか?

  2. Unix / Linuxで特定のユーザーが所有するすべてのファイルを見つける方法は?

  3. Linux ディスク ドライブのモデル番号を調べるには?

  1. LinuxですべてのSudoユーザーを見つける方法

  2. すべてのファイルを削除せずにgzipする

  3. Linuxでパーティションのすべてのファイルを一覧表示する方法は?