RWHOD(8)

명칭
rwhod - 시스템 스테이터스 서버

서식
rwhod [-i] [-p] [-l] [-m [ttl]]

해설
rwhod 유틸리티는, rwho(1) (이)나 ruptime(1) 프로그램으로 사용되는 데이타베이스를 관리하는 서버입니다. 네트워크에 대해 브로드캐스트 혹은 멀티 캐스트 메세지를 사용할 수 있는 것이 전제가 됩니다.

rwhod 유틸리티는 스테이터스 정보의 생성과 이용의 양쪽 모두를 실시합니다. 다만, -l (listen 모드) 옵션을 지정했을 경우는 예외로, 이용만 실시합니다. 정보의 생성에서는, 정기적으로 시스템에 상태를 문의해 스테이터스 메세지를 구축해 네트워크에 브로드캐스트 합니다. 정보의 이용에서는, 다른 rwhod 서버로부터 상태 메세지를 받아들여, 검사하고 나서, /var/rwho 디렉토리아래의 파일에 기록합니다.

-i 옵션은, 안전하지 않는 모드를 유효하게 합니다. 이 모드에서는, rwhod (은)는 입력 패킷의 소스 포트를 무시합니다.

-p 옵션은, rwhod 에 모든 POINTOPOINT 인터페이스를 무시시킵니다. 요구시에 다이얼 하는 인터페이스를 항상 활동 상태로 하고 싶지 않은 경우에 유용합니다.

-l 옵션을 지정하면(자) listen 모드가 유효하게 되어, rwhod (은)는 정보를 브로드캐스트 하지 않게 됩니다. 이것에 의해, 자기 자신의 정보를 브로드캐스트 하지 않고 다른 머신의 rwhod 정보를 감시할 수가 있습니다.

-m 옵션은, 인터페이스의 "ifnet" 구조체에 IFF_MULTICAST 플래그가 설정되어 있는 모든 인터페이스 (루프백 인터페이스는 제외한) 위에서, rwhod 에 (브로드캐스트 대신에) IP 멀티 캐스트를 사용하게 합니다. 멀티 캐스트에 의한 보고는, 직접 연결되어 있는 서스네트워크에의 전송을 막기 위해서(때문에) TTL(Time To Live) 1으로 보내집니다.

옵션의 ttl 인수가 -m 플래그와 함께 주어졌을 때에는, rwhod 하 IP 멀티 캐스트 데이터 그램을 TTL 가 ttl (으)로서 모든 인터페이스는 아니고 1 개의 인터페이스에 대해서 보냅니다. ttl (은)는 0 에서 32 (또는, MAX_MULTICAST_SCOPE)까지의 값입니다. -m 1 (은)는, -m (와)과는 다른 것에 주의해 주세요. -m 1 (은)는, 1 개의 인터페이스에만 전송을 실시합니다.

-m 플래그가, ttl 인수 없음으로 사용되었을 경우, 프로그램은 멀티 캐스트 rwhod 보고를 모든 멀티 캐스트가 이용 가능한 인터페이스로부터 받습니다. ttl 인수가 주어졌을 경우는, 멀티 캐스트 리포트는 1 개의 인터페이스 (으)로부터만 받습니다. 그 1 개(살)은, 보고를 실시하고 있는 것입니다 (이것은, 호스트 루팅표에 의해 제어됩니다). -m 옵션에 관계없이, 프로그램은 브로드캐스트 혹은 uni-cast에 의한 보고를 모든 인터페이스로부터 받습니다. 따라서, 이 프로그램은, 멀티 캐스트를 사용하지 않은 낡다 rwhod (으)로부터 보고를 받아들입니다만, 멀티 캐스트가 사용되고 있는 경우에는 낡다 rwhod 하 이 프로그램에 의해 생성되는 보고를 받을 수 없게 됩니다.

서버는, ``who''서비스로 지정되어 있는 포트 번호로 메세지를 송수신 합니다. services(5) (을)를 참조해 주세요. 송수신 하는 메세지는 이하와 같은 형식입니다.

    struct  outmp {
    	char    out_line[8];            /* 단말 (tty) 명 */
    	char    out_name[8];            /* 유저 ID */
    	long    out_time;               /* 시각 */
    };
    struct  whod {
    	char    wd_vers;
    	char    wd_type;
    	char    wd_fill[2];
    	int     wd_sendtime;
    	int     wd_recvtime;
    	char    wd_hostname[32];
    	int     wd_loadav[3];
    	int     wd_boottime;
    	struct  whoent {
    		struct  outmp we_utmp;
    		int     we_idle;
    	} wd_we[1024 / sizeof (struct whoent)];
    };

모든 필드는, 송신에 앞서 네트워크 바이트 오더에 변환됩니다. 호스트 부하 (load average)는 w(1) 에 의해 계산되어 송신의 5, 10, 15 분전의 부하를 100 배가 되었다 정수로서 표현됩니다. 호스트명은, gethostname(3) 시스템 콜로 얻을 수 있던 것이 도메인명을 생략 해 격납됩니다. 메세지의 마지막 배열에는, 메세지를 송신한 머신에 로그인하고 있다 유저의 정보가 격납되고 있습니다. 이 정보는, utmp(5) 의 비아이돌의 단말 라인의 엔트리와 그 단말 라인으로부터 마지막에 캐릭터를 받은 시간을 초수로 나타낸 값이 들어가 있습니다.

rwhod 서버에 의해 수신되는 메세지는, rwhod 서버의 포트로부터 송신된 것이 아닌지, -i 옵션이 지정되어 있지 않으면 버려집니다. 한층 더 메세지 의 호스트의 이름을 표시할 수 없다 ASCII 캐릭터를 포함하고 있는 경우도, 메세지는 버려집니다. rwhod 하지만 받은 올바른 메세지는 /var/rwho 디렉토리에 whod.hostname 그렇다고 하는 파일명으로 격납됩니다. 이러한 파일에는, 최신의 메세지 만이, 위에서 설명한 형식에서 남아 있습니다.

스테이터스 메세지는 거의 3 분 마다 작성됩니다. rwhod 유틸리티는, 30 분 마다 /boot/kernel/kernel 에 대해서 nlist(3) (을)를 실행합니다. 이것은, 이 파일이 그 시점에서의 실제의 시스템 이미지 인 것을 확인하기 (위해)때문입니다.

관련 항목
ruptime(1), rwho(1)

버그
네트워크간에 스테이터스 정보를 중계할 방법이 필요합니다. 스테이터스 정보는, 계속 쭉 보내는 것이 아니라, 요구가 있었을 때 에만 보내도록(듯이) 해야 하는 것이지요. 서버가 죽어 있거나, 네트워크의 통신 장해를, 머신이 다운하고 있으면(자) 믿어 버려 버리는 경우가 자주 있습니다.

역사
rwhod 유틸리티는 4.2BSD 그리고 등장했습니다.