Conky의 diskio/diskiograph는 물리적 장치 이름만 이해합니까?

Conky의 diskio/diskiograph는 물리적 장치 이름만 이해합니까?

그렇다면 장치 이름이 임의로 할당되는 경우가 많기 때문에 이는 최신 Linux 배포판에 큰 타격이 될 수 있습니다. 따라서 시스템에 HDD가 2개 이하이고 포트에 USB 플래시 드라이브가 2개 있는 경우 부팅 후 상황은 다음과 같습니다.

/dev/sda .. HDD #1
/dev/sdb .. USB flash drive #1
/dev/sdc .. USB flash drive #2
/dev/sdd .. HDD #2

여기저기 찾아보고 다양한 방법을 시도해 보았으나 .conkyrc소용이 없었습니다. 작동하지 않는 것 같습니다.

시스템 명령을 실행하여 conky에 필요한 형식을 "생성"하는 것도 고려했지만 이마저도 실패했습니다. 이 에서는 다음 bash을 통해 이를 달성할 수 있습니다.

$ basename $(readlink /dev/disk/by-label/mydisklabel)

conky는 시스템 명령 실행을 허용하지만 {diskio}/{diskiograph} 옵션으로는 이것이 불가능합니다.
따라서 다음은 작동하지 않습니다.

${diskio /dev/${execp basename $(readlink /dev/disk/by-label/mydisklabel)}}

UUID가 있는 변형도 작동하지 않습니다(여기에는 표시되지 않음).
여러분 중에 이것을 conky에게 "가르쳐"본 사람이 있나요? 매우 다재다능하지만 믿을 수 없을 정도로(예전과 비교할 때) udev친구들은 더 이상 특정 순서로 드라이브를 유지하지 않고 부팅 순서마다 다시 섞을 것입니다. 반면 도구(GKrellM은 그다지 좋지 않습니다!) 물리적 드라이브/장치 이름을 고수합니다. .

답변1

/dev/disk/by-??다음과 같이 경로 전체를 사용하려면 다음을 수행하십시오.

${diskio /dev/disk/by-label/mydisklabel}

Fedora 20부터 패키지로 제공되는 conky버전 1.9.1 이상이 필요합니다 . Ubuntu는 여전히 이전 버전(Ubuntu 14.04 기준)을 사용하므로 .conky-ngconkyconky-ng

Disk IO아래 스크린샷의 줄은 터미널에서 실행될 때 항목을 처리하는 것을 보여줍니다 by-label..conkyrcfind .

Conky는 디스크 레이블로 실행됩니다.

경로의 마지막 문자와 닫는 중괄호( ) 사이에 공백이 있어서는 안 됩니다 . }그렇지 않으면 conky경로를 찾을 수 없다는 메시지가 나타납니다.

답변2

소스 코드를 살펴보면 심볼릭 링크에 대한 이름 확인이 상대적인 방식으로 수행되는 것으로 보입니다. 이 프로그램은 realpath(3)가 사용되어야 하는 readlink(2)를 사용합니다. 사용 시 conky의 현재 작업 디렉터리가 아닌 경우 /dev/disk/by-id/wwn-*구문 분석이 실패합니다.../../sd?/dev/disk/by-id

태그를 사용하려면 사용할 수 label:some_disk_label있으며 작동해야 합니다. by-id/by-uuid를 얻으려면 작성자가 내 풀 요청을 수락해야 합니다.https://github.com/brndnmtthws/conky/pull/238여기서는 realpath(3)를 사용하도록 diskio 경로 확인 방법을 변환했습니다.

관련 정보