공공부하자개발 · 영어 학습 노트
리눅스
리눅스 명령어리눅스 자체를 익히는 명령 중심 학습0/10 완료
  • 01파일·디렉터리 명령
  • 02텍스트 보기·편집 (less·vi)
  • 03사용자·그룹·권한·sudo
  • 04패키지·시스템 정보 (dnf·rpm)
  • 05프로세스·자원 (ps·top·free·df)
  • 06네트워크 명령 (ip·ss·ping·scp)
  • 07압축·아카이브·검색 (tar·gzip·find)
  • 08셸 활용 (히스토리·별칭·단축키)
  • 09sed · awk 한 줄 처리 (치환·필드·집계)
  • 10링크 · 디스크 · 예약 작업 (ln·mount·crontab)
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 리눅스 명령어 › 10 / 10

링크 · 디스크 · 예약 작업 (ln·mount·crontab)

섹션 7진행 0 / 10
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

3. 코드 예제

예제 1: 심볼릭 링크와 버전 전환 — 01_link_disk_cron.sh 발췌

bash
mkdir -p release-1 release-2
echo "v1" > release-1/app.txt
echo "v2" > release-2/app.txt
ln -s release-1 current
ls -l | grep current
readlink current
readlink -f current
realpath current

ln -sfn release-2 current
readlink current
cat current/app.txt
text
== 1. 심볼릭 링크: ln -s, readlink -f, realpath
  [링크 권한 없음: 리눅스에서는 실행됨] ln -s release-1 current
  [링크 권한 없음: 리눅스에서는 실행됨] ls -l | grep current
  [링크 권한 없음: 리눅스에서는 실행됨] readlink current
  [링크 권한 없음: 리눅스에서는 실행됨] readlink -f current
  [링크 권한 없음: 리눅스에서는 실행됨] realpath current

== 2. 버전 전환: ln -sfn (기존 링크를 새 대상으로 덮어쓰기)
  [링크 권한 없음: 리눅스에서는 실행됨] ln -sfn release-2 current
  [링크 권한 없음: 리눅스에서는 실행됨] readlink current
  [링크 권한 없음: 리눅스에서는 실행됨] cat current/app.txt

이 검증 환경은 Windows Git Bash 이고 관리자 권한이 없어 심볼릭 링크 생성 자체가 막혀 있습니다. 스크립트가 ln -s 성공 여부를 먼저 검사해 안내 문구만 출력하도록 짰습니다. 실제 리눅스 서버라면 ls -l 에 current -> release-1 이 보이고 readlink 는 release-1, readlink -f 는 절대 경로를 돌려줍니다.

예제 2: 하드 링크와 끊어진 링크 — 01_link_disk_cron.sh 발췌

bash
touch original.txt
ln original.txt hardlink.txt
ln -s original.txt symlink.txt
ls -i original.txt hardlink.txt

ln -s /no/such/file broken
find . -xtype l
text
== 3. 하드 링크 vs 심볼릭 링크
  [링크 권한 없음: 리눅스에서는 실행됨] ln -s original.txt symlink.txt
5066549581880185 hardlink.txt
5066549581880185 original.txt
  [링크 권한 없음: 리눅스에서는 실행됨] ls -l symlink.txt

== 4. 끊어진 링크 찾기: find -xtype l
  [링크 권한 없음: 리눅스에서는 실행됨] ln -s /no/such/file broken

하드 링크는 NTFS 에서도 권한 없이 만들어지므로 ls -i 결과가 실제로 같은 inode 번호(위 숫자)를 보여줍니다. 원본과 하드 링크가 같은 데이터를 공유한다는 증거입니다. symlink.txt·broken 은 앞서와 같은 이유로 안내 문구만 나왔습니다.

예제 3: 디스크 확인과 fstab 검증 — 명령 목록

bash
lsblk
blkid
df -hT
findmnt /
df -i
lvs
lvextend -r -L +10G /dev/mapper/vg-lv
text
== 6. 블록 장치·디스크 사용량: lsblk, blkid, df, mount, findmnt
  [dry-run] lsblk
  [dry-run] blkid
  [dry-run] df -hT
  [dry-run] findmnt /
  [dry-run] df -i

== 8. LVM 한 소절
  [dry-run] lvs
  [dry-run] sudo lvextend -r -L +10G /dev/mapper/vg-lv

이 명령들은 RHEL 전용이라 Git Bash 에서는 실행하지 않고 DRY_RUN 으로 명령만 출력했습니다. 실제 서버에서는 df -hT 가 마운트별 용량과 파일시스템 종류를 표로 보여줍니다.

예제 4: crontab 과 예약 작업 도구 — 명령 목록

bash
crontab -l
# */5 * * * *  /opt/app/check.sh >> /var/log/check.log 2>&1
# 0 2 * * *    /opt/app/backup.sh
# @daily       /opt/app/cleanup.sh
cat /etc/cron.d/myapp
run-parts /etc/cron.daily
echo /opt/app/once.sh | at now + 5 minutes
atq
text
== 9. crontab: -e/-l/-r 와 5개 필드
  [dry-run] crontab -l
  */5 * * * *  /opt/app/check.sh >> /var/log/check.log 2>&1
  0 2 * * *    /opt/app/backup.sh
  0 9 * * 1-5  /opt/app/report.sh
  @daily       /opt/app/cleanup.sh

== 10. /etc/cron.d 와 run-parts
  [dry-run] cat /etc/cron.d/myapp
  [dry-run] run-parts /etc/cron.daily

== 11. at 일회성 작업
  [dry-run] echo /opt/app/once.sh | at now + 5 minutes
  [dry-run] atq

crontab -l 은 현재 사용자의 예약 작업을 출력합니다. 아래 heredoc 네 줄은 실제로 등록할 때 쓰는 형식 예시입니다. /etc/cron.d/myapp 처럼 시스템 전역 crontab에는 실행 사용자 필드가 하나 더 들어갑니다.

예제 직접 실행

아래 폴더의 셸 스크립트를 RHEL 또는 Git Bash 에서 실행합니다. 리눅스 전용 명령은 DRY_RUN=1 을 붙이면 실행하지 않고 명령만 출력합니다.

cd linux-src/cmd_10_link_disk_cron
ls *.sh
DRY_RUN=1 bash <스크립트>.sh
코드 예제
  • 예제 1: 심볼릭 링크와 버전 전환 — 01_link_disk_cron.sh 발췌
  • 예제 2: 하드 링크와 끊어진 링크 — 01_link_disk_cron.sh 발췌
  • 예제 3: 디스크 확인과 fstab 검증 — 명령 목록
  • 예제 4: crontab 과 예약 작업 도구 — 명령 목록
이전 섹션2 핵심 원리3 / 7다음 섹션4 응용 변형 예제