키보드

키동작
Tab명령, 파일 이름 자동 완성. 두 번 누르면 후보 목록
↑ / ↓이전 / 다음 명령
Ctrl-C실행 중인 명령 중단
Ctrl-D입력 끝. 빈 프롬프트에서는 셸 종료(ssh 접속이면 로그아웃)
Ctrl-Z실행 중인 명령 일시 정지. fg로 다시, bg로 백그라운드에서 계속
Ctrl-R명령 기록 검색. 다시 누르면 더 이전 것
Ctrl-L화면 지우기 (clear)
Ctrl-A / Ctrl-E줄 맨 앞 / 맨 뒤로
Ctrl-U커서 앞 내용 지우기
!!직전 명령 다시. sudo !!
!$직전 명령의 마지막 인자
history명령 기록 목록. !번호로 다시 실행
명령동작
pwd현재 디렉터리
ls -lh자세히, 크기는 읽기 쉽게. -a는 숨김 파일까지, -t는 수정 시각 순
cd 경로이동. cd만 치면 홈, cd ..는 위로, cd -는 직전 위치
mkdir -p a/b/c중간 디렉터리까지 한 번에 만들기
cp a b, cp -r dir1 dir2복사. 디렉터리는 -r
mv a b이동, 이름 바꾸기
rm 파일, rm -r dir삭제. 휴지통이 없다
*.out, h2o_?.xyz와일드카드. *는 아무 글자나 여러 개, ?는 한 글자
find . -name '*.out'하위 디렉터리까지 이름으로 찾기
du -sh *항목별 용량
df -h파일 시스템별 크기와 여유
tar czf a.tar.gz dir / tar xzf a.tar.gz묶고 압축 / 풀기. tar tzf는 목록

보기와 찾기

명령동작
less h2o.out한 화면씩 보기. /단어 검색, n 다음, G 끝, q 나가기
head -n 20 / tail -n 20앞 / 뒤 20줄
tail -f h2o.out늘어나는 출력 따라 보기. Ctrl-C로 멈춤
grep 'FINAL SINGLE POINT' *.out패턴이 든 줄 찾기. -n 줄 번호, -i 대소문자 무시, -r 하위 디렉터리, -c 개수
wc -l줄 수
cmd | less출력을 다음 명령으로 넘기기(파이프)
cmd > f, cmd >> f출력을 파일로(덮어쓰기 / 덧붙이기)
cmd 2>&1오류 출력도 같은 곳으로
nano f편집. Ctrl-O 저장, Ctrl-X 종료
vim f편집. i 입력, Esc 후 :wq 저장하고 종료, :q! 저장 안 하고 종료

권한

명령동작
ls -l-rwxr-xr--: 소유자 / 그룹 / 나머지의 읽기·쓰기·실행
chmod +x run.sh실행 권한 주기
chmod 600 f나만 읽고 쓰기 (개인 키, ~/.ssh/config)
chmod 700 dir나만 접근 (~/.ssh)
chmod -R g+r dir그룹에 읽기 권한을 하위까지

프로세스와 환경

명령동작
top, htop실행 중인 프로세스, CPU와 메모리. q로 나가기
ps ux내 프로세스 목록
kill PID, kill -9 PID종료 요청 / 강제 종료
cmd &백그라운드 실행. jobs로 목록
nohup cmd > log 2>&1 &로그아웃해도 계속 실행
echo $PATH변수 값 보기
export OMP_NUM_THREADS=4환경 변수 설정 (현재 셸과 그 자식 프로세스)
which orca명령이 어느 파일인지
source ~/.bashrc설정 파일 다시 읽기

ssh와 전송

명령동작
ssh user@host, ssh vanda접속 (별명은 ~/.ssh/config)
ssh-keygen -t ed25519키 쌍 만들기
ssh-copy-id vanda공개 키를 서버에 등록
ssh-add, ssh-add -lagent에 키 넣기 / 목록
ssh-keygen -R hostknown_hosts에서 옛 호스트 키 지우기
ssh -v vanda접속 과정 자세히(문제 진단)
scp f vanda:~/dir/올리기
scp vanda:~/dir/f .받기. 디렉터리는 -r
rsync -avhP src/ dst/바뀐 것만 동기화. 원본 끝 /는 "내용물"
rsync -n ...dry-run. 무엇을 옮길지만 보기
--include='*/' --include='*.out' --exclude='*'특정 확장자만
--exclude='*.gbw'특정 파일 빼기

tmux

명령 / 키동작
tmux new -s NAME새 세션
tmux ls세션 목록
tmux attach -t NAME다시 붙기
tmux kill-session -t NAME세션 끝내기
Ctrl-b d떼기
Ctrl-b c / n / p새 창 / 다음 / 이전
Ctrl-b % / "좌우 / 위아래로 나누기
Ctrl-b 방향키칸 이동
Ctrl-b z칸 확대 / 되돌리기
Ctrl-b [스크롤(복사 모드). q로 나가기

PBS와 Slurm

할 일PBS ProSlurm
모듈module avail · module load 이름 · module list · module purge
제출qsub run.pbssbatch run.sh
내 작업qstat -u $USERsqueue -u $USER
자세히qstat -f IDscontrol show job ID
취소qdel IDscancel ID
대화형qsub -I -l select=1:ncpus=4 -l walltime=1:00:00srun --cpus-per-task=4 --time=1:00:00 --pty bash
자원#PBS -l select=1:ncpus=8:mem=16gb#SBATCH --ntasks=8 --mem=16G
시간#PBS -l walltime=02:00:00#SBATCH --time=02:00:00
이름#PBS -N name#SBATCH --job-name=name
제출 디렉터리cd $PBS_O_WORKDIR$SLURM_SUBMIT_DIR (기본으로 거기서 시작)
출력 파일name.o<ID>slurm-<ID>.out

스크립트 문법은 셸 스크립팅 치트시트에 따로 정리했다.