Notice
Recent Posts
Recent Comments
Link
반응형
관리 메뉴

고양이 집사의 IT 노트

[command] whoami, hostname, uname 명령어 본문

Programming/Linux

[command] whoami, hostname, uname 명령어

MAYSON 2026. 9. 27. 19:23
반응형

여러 서버를 옮겨 다니며 작업하다 보면, 지금 접속한 서버가 어디인지, 어떤 계정으로 로그인되어 있는지 헷갈리는 순간이 생깁니다. nohup이나 crontab으로 스크립트를 실행할 때도, 로그에 "어떤 서버, 어떤 계정에서 실행됐는지"를 남겨두면 나중에 문제를 추적하기 훨씬 수월해집니다. 이때 사용하는 명령어가 whoami, hostname, uname입니다.

whoami (현재 로그인 사용자 확인)

whoami는 현재 터미널에 로그인되어 있는 사용자명을 출력하는 명령어입니다.

# 사용법
whoami

# 결과 예시
oracle

su/sudo 글에서 다뤘던 것처럼, su - oracle로 계정을 전환한 뒤에는 지금 어떤 계정으로 작업 중인지 헷갈리기 쉽습니다. 이럴 때 whoami로 바로 확인할 수 있습니다.

# 계정 전환 후 확인하는 흐름
su - oracle
whoami
# 결과: oracle

hostname (서버 이름 확인)

hostname은 현재 접속한 서버의 호스트명을 출력하는 명령어입니다. 여러 서버에 SSH로 옮겨 다니며 작업할 때, 지금 어느 서버에 있는지 확인하는 용도로 씁니다.

# 사용법
hostname

# 결과 예시
db-prod-01

# -I 옵션 : 서버의 IP 주소 표시
hostname -I
# 결과: 192.168.0.10

운영 서버와 테스트 서버를 여러 개 동시에 열어놓고 작업하다가, 실수로 운영 서버에 테스트용 명령어를 실행하는 사고는 실무에서 종종 발생합니다. 중요한 작업(특히 삭제나 재기동 같은) 전에는 hostname으로 현재 서버를 한 번 더 확인하는 습관이 이런 사고를 예방하는 데 도움이 됩니다.

uname (시스템 정보 확인)

uname은 커널 이름, 버전, 시스템 아키텍처 등 운영체제 관련 정보를 보여주는 명령어입니다.

# 사용법
uname [옵션]

# 옵션 없이 실행 (커널 이름만 출력)
uname
# 결과: Linux

# -a : 모든 시스템 정보를 한 번에 출력 (가장 많이 씀)
uname -a
# 결과 예시
Linux db-prod-01 5.14.0-284.el9.x86_64 #1 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux

uname 주요 옵션

# -r : 커널 릴리즈 버전만 출력
uname -r
# 결과: 5.14.0-284.el9.x86_64

# -m : 시스템 아키텍처 출력 (32비트/64비트 구분)
uname -m
# 결과: x86_64

# -n : 호스트명 출력 (hostname 명령어와 동일한 결과)
uname -n

Oracle DB나 다른 소프트웨어를 설치할 때, 설치 파일이 서버의 아키텍처(x86_64인지 다른 것인지)와 커널 버전 조건을 만족하는지 사전 확인하는 과정에서 uname -a를 자주 사용하게 됩니다.

번외: /etc/release로 정확한 배포판 버전 확인하기

uname -a는 커널 정보는 정확하게 알려주지만, 배포판 이름이나 세부 버전(예: CentOS 7.9인지 RHEL 8.6인지)까지는 보여주지 않습니다. 정확한 배포판 정보가 필요할 때는 /etc 디렉토리에 있는 release 관련 파일을 직접 열어보는 방법을 사용합니다.

# RHEL, CentOS, Rocky Linux, Oracle Linux 계열
cat /etc/redhat-release
# 결과 예시: Red Hat Enterprise Linux Server release 7.9 (Maipo)

# 최신 배포판 대부분에서 공통으로 지원 (더 상세한 정보)
cat /etc/os-release
# 결과 예시
NAME="Red Hat Enterprise Linux Server"
VERSION="7.9 (Maipo)"
ID="rhel"
VERSION_ID="7.9"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.9 (Maipo)"

# 파일명을 정확히 몰라도 한 번에 확인하고 싶을 때 (와일드카드 활용)
cat /etc/*release*

/etc/os-release는 배포판 종류에 상관없이 거의 모든 최신 리눅스에서 공통으로 지원되는 표준 파일이라, 가장 신뢰도 높은 확인 방법으로 꼽힙니다. /etc/redhat-release처럼 배포판마다 파일명이 다른 경우, 어떤 파일이 있는지 정확히 모를 때는 cat /etc/*release*처럼 와일드카드를 써서 한 번에 훑어보는 방법도 실무에서 종종 사용됩니다. 정리하면, 커널 버전만 필요하면 uname -r, 배포판 이름과 정확한 버전까지 필요하면 cat /etc/os-release를 쓰는 것이 가장 확실한 방법입니다.

실무에서 자주 마주치는 상황

여러 서버를 관리하는 상황에서, 스크립트 실행 로그에 서버 정보를 함께 남기는 방식은 다음과 같습니다.

#!/bin/bash
# 배치 스크립트 상단에 실행 환경 정보를 로그로 남기는 예시

LOG_FILE=/home/oracle/logs/batch_job.log

echo "===== 배치 작업 시작 =====" >> $LOG_FILE
echo "실행 서버: $(hostname)" >> $LOG_FILE
echo "실행 계정: $(whoami)" >> $LOG_FILE
echo "시스템 정보: $(uname -a)" >> $LOG_FILE
echo "배포판 정보: $(cat /etc/os-release | grep PRETTY_NAME)" >> $LOG_FILE
echo "실행 시각: $(date +"%Y-%m-%d %H:%M:%S")" >> $LOG_FILE

# (실제 배치 작업 수행)

echo "===== 배치 작업 종료 =====" >> $LOG_FILE

date 글에서 다뤘던 시각 기록에 더해, 이렇게 서버명과 계정 정보, 배포판 정보까지 로그 맨 앞에 남겨두면, 나중에 여러 서버에서 실행된 로그가 뒤섞여도 어느 서버, 어느 계정, 어떤 환경에서 실행된 기록인지 바로 구분할 수 있습니다. 특히 같은 스크립트를 여러 서버에 배포해서 사용하는 경우, 이 정보 없이는 문제가 생겼을 때 원인 서버를 특정하기 어려운 경우가 많아 실무에서 자주 쓰이는 패턴입니다.

반응형

'Programming > Linux' 카테고리의 다른 글

[command] env, export 명령어  (0) 2026.10.01
[command] passwd, chage 명령어  (0) 2026.09.30
[command] date, cal 명령어  (0) 2026.09.26
[command] iostat, vmstat 명령어  (0) 2026.09.25
[command] nohup, &, jobs, fg, bg 명령어  (0) 2026.09.24
Comments