udev如何除錯,如何看udev的輸出日誌?udev除錯的坑?
一、 問題:udev如何除錯,如何看udev的輸出日誌?udev除錯的坑?
二、結論:
環境centos6
啟動:start_udev 除錯日誌,設定udev.conf 為udev_log="debug" ,日誌輸出在/var/log/message
(1)注意2點:rule啟動有順序的,假設你增加iscsi link,那你的必須要先載入網路,70網路之後,你再執行你新增iscsi link的指令碼,否則rule指令碼無效
(2)假如你現在給裝置新增一個link name,當你編寫好rule指令碼後,呼叫呼叫start_dev,你會發現,在/var/log/message 看不到指令碼執行的日誌。原因是如果已經有link name,udev是會忽略的。這樣如果指令碼編寫有問題,對除錯是不利的,所以需要重啟,可以看到完整的udev指令碼執行日誌輸出。
三、具體例子分析過程
用 UDEV 固定 iSCSI 裝置名稱
用 open-iscsi 連上 Target 之後,iSCSI 裝置的名稱在系統裡總是變來變去,無法固定,這給應用帶來了諸多不便。為了固定系統中 iSCSI 裝置的名稱,可以考慮使用Linux 2.6 核心引入的 UDEV 機制。
[root@rac1 rules.d]# cat 95-openiscsi.rules
KERNEL=="sd*", ENV{ID_PATH}=="ip-*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev2.sh %E{ID_PATH}", SYMLINK+="iscsi/%c/part%n"
[root@rac1 rules.d]# cat /etc/udev/scripts/iscsidev2.sh
#!/bin/sh
# File: /etc/udev/scripts/iscsidev.sh
TARGET_NAME=`/bin/echo $1 | /bin/awk -F"-iscsi-" '{print $2}' | /bin/awk -F"-lun-" '{print $1"/lun"$2}'`
/bin/echo ${TARGET_NAME}
規則中以"%"開始的是 UDEV 中的引數,如下:
[table]
|%E{key}|一個環境變數的值,即透過 [color=red]udevadm[/color] 命令查詢出的裝置屬性
|%c|PROGRAM 返回的結果
|%n|裝置的核心號碼,例如:sda3 的核心號碼是 3
重啟就會看到詳細日誌輸出(設定log為debug),以下是正確新增link的日誌:
[root@rac1 ~]# tail -5000 /var/log/messages |grep "/etc/udev/scripts/iscsidev2"
Mar 31 11:04:27 rac1 udevd-work[1656]: PROGRAM '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0' /etc/udev/rules.d/95-openiscsi.rules:2
Mar 31 11:04:27 rac1 udevd-work[1656]: '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0' started
Mar 31 11:04:27 rac1 udevd-work[1645]: '/etc/udev/scripts/iscsidev2.sh' (stdout) 'iqn.2006-01.com.openfiler:racdb.crs1/lun0'
Mar 31 11:04:27 rac1 udevd-work[1645]: '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.crs1-lun-0' returned with exitcode 0
Mar 31 11:04:27 rac1 udevd-work[1656]: '/etc/udev/scripts/iscsidev2.sh' (stdout) 'iqn.2006-01.com.openfiler:racdb.data1/lun0'
Mar 31 11:04:27 rac1 udevd-work[1656]: '/etc/udev/scripts/iscsidev2.sh ip-172.16.27.38:3260-iscsi-iqn.2006-01.com.openfiler:racdb.data1-lun-0' returned with exitcode 0
[root@rac1 ~]# ls /dev/iscsi/
iqn.2006-01.com.openfiler:racdb.crs1 iqn.2006-01.com.openfiler:racdb.data1 iqn.2006-01.com.openfiler:racdb.data2 iqn.2006-01.com.openfiler:racdb.fra1
(1)以上是我花了4個小時除錯出來的結果。假設你把95-openiscsi.rules重新命名成55-openiscsi.rules,然後你會發現,你是怎麼得不到上面link 結果的。
iqn.2006-01.com.openfiler:racdb.crs1 。
原因是:因為建立iscsi需要網路的支援,所以應該在70-persistent-net.rules之後執行。
(2)假設你要執行的指令碼沒有執行許可權,會發生什麼?很明顯udev不能呼叫,日誌就應該列印出錯誤訊息。那這裡有一個坑,如果你重新使用命令start_udev,message日誌
裡面是沒有錯誤訊息的。必須要重啟。
原因是:udev 會忽略已經建立的link,這個時候就不好除錯了,需要重啟,才能看到錯誤日誌 returned with exitcode 2
(3)start_udev,這個命令是重新載入一遍裝置命名,有一個坑就是上面的,如果已經有了的裝置命名,它是不會去重新載入,也不會在message列印日誌。當發生錯誤的時候,
我們都不知道錯誤在哪裡。這個是我認為除錯的一個坑。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30393770/viewspace-2765904/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux上建立udevLinuxdev
- rhel7 udevdev
- linux下udev和mdev的使用Linuxdev
- 如何檢視Oracle RAC的asm磁碟的udev對應關係OracleASMdev
- Linux 7.x 中 UDEV 生效的方法Linuxdev
- C++簡單日誌/debug除錯資訊輸出C++除錯
- UDEV掛載EMC多路徑盤dev
- linux udev裸裝置繫結Linuxdev
- linux start_udev 導致VIP漂移Linuxdev
- 使用udev擴充套件ASM磁碟組dev套件ASM
- RAC_UDEV的99-oracle-asmdevices.rules配置方法devOracleASM
- node inspect chrome日誌除錯Chrome除錯
- 使用udev高效、動態的管理Linux裝置檔案devLinux
- Oracle Linux 7.8 多路徑(Multipath)+Udev繫結磁碟OracleLinuxdev
- 如何除錯程式的 Release 版本除錯
- 將程式碼中的除錯資訊輸出到日誌檔案中除錯
- RAC19c搭建-centos7+openfiler+multipath+udevCentOSdev
- RAC11g搭建-centos7+openfiler+multipath+udevCentOSdev
- APPCAN 如何快速的進行除錯?APPPCA除錯
- PhpStrom 如何優雅的除錯 HyperfPHP除錯
- [翻譯] 除錯 Rxjs(二):日誌記錄除錯JS
- Windows 下如何除錯 PowerShellWindows除錯
- python如何單步除錯Python除錯
- 如何除錯SSH連線除錯
- 使用 udev 高效、動態地管理 Linux 裝置檔案devLinux
- rhel 7.x 使用 udev scsi rules 配置裸裝置dev
- IsDebuggerPresent的反除錯與反反除錯除錯
- RMAN刪除歸檔日誌出現RMAN-0813錯誤的處理
- 除錯篇——除錯物件與除錯事件除錯物件事件
- python如何輸出日誌?Python
- win10 如何除錯串列埠_win10串列埠除錯怎麼除錯Win10除錯串列埠
- 如何提高後臺服務應用問題的排查效率?日誌 VS 遠端除錯除錯
- linux vdo驗證 oracle asm diskgroup sector_size 4096 udev asmlibLinuxOracleASMdev
- 如何在VS CODE除錯Angular除錯Angular
- webpack打包過程如何除錯?Web除錯
- Wordpress如何開啟除錯模式除錯模式
- Linux 黑乎乎的命令列下,如何除錯 Python?Linux命令列除錯Python
- DophinScheduler 如何定期刪除日誌例項?