bash 셸 스크립트 예제를 읽고 있습니다.
#!/bin/bash
# This script makes a backup of my home directory.
cd /home
# This creates the archive
tar cf /var/tmp/home_franky.tar franky > /dev/null 2>&1
# First remove the old bzip2 file. Redirect errors because this generates some if the archive
# does not exist. Then create a new compressed file.
rm /var/tmp/home_franky.tar.bz2 2> /dev/null
bzip2 /var/tmp/home_franky.tar
# Copy the file to another host - we have ssh keys for making this work without intervention.
scp /var/tmp/home_franky.tar.bz2 bordeaux:/opt/backup/franky > /dev/null 2>&1
# Create a timestamp in a logfile.
date >> /home/franky/log/home_backup.log
echo backup succeeded >> /home/franky/log/home_backup.log
여기서 "/ dev / null 2> & 1"의 사용법을 이해하려고합니다. 처음에는 스크립트가 충돌하지 않고 오류를 정상적으로 무시하기 위해이 스크립트가 / dev / null을 사용한다고 생각했습니다 (프로그래밍 언어의 예외 처리 시도와 같은 종류). tar를 사용하여 디렉토리를 tar 파일로 압축하는 방법을 알 수 없기 때문에 모든 유형의 오류가 발생할 수 있습니다.
tar
$ PATH에 없기 때문입니다. 디스크에 I / O 오류가 발생했기 때문에 버전이 변경되어 다른 구문이 필요 tar
하기 때문에 장치에 남은 공간이 없기 때문에 충돌이 tar
발생했습니다. 더 많이 찾을 수있을 것입니다.
/dev/null
은 충돌을 방지하지 않지만 stdout 및 stderr 출력 스트림을 정리합니다.tar
다양한 방법으로 오류가 발생할 수 있습니다. 쓰기 권한이 없거나 파일이 이미있을 수 있습니다.