
리눅스를 쓰다 보면 단순히 명령어만 실행하는 게 아니라, 여러 프로세스를 동시에 관리하거나 환경을 꾸미고, 원격 서버에 접속해야 하는 상황이 자주 생깁니다. 이번 글에서는 Job Control(작업 제어), 터미널 멀티플렉서, alias와 dotfiles, SSH 같은 기본 개념들을 정리해 보려고 해요.
1. Job Control – 프로세스 제어하기
터미널에서 프로그램을 실행하다 보면 멈추거나, 잠시 중지하거나, 백그라운드로 돌리고 싶을 때가 있죠. 이럴 때 쓰는 기능이 바로 Job Control이에요.
- Ctrl-C → 실행 중인 프로그램을 멈춤 (SIGINT 시그널 전송)
- Ctrl-Z → 프로그램을 잠시 멈춤 (SIGTSTP 시그널)
- fg → 멈춘 작업을 다시 포어그라운드에서 실행
- bg → 멈춘 작업을 백그라운드에서 실행
- jobs → 현재 셸에서 실행 중이거나 멈춘 작업 목록 확인
- & → 명령어 끝에 붙이면 백그라운드에서 실행
- nohup → 터미널을 꺼도 프로그램이 종료되지 않게 실행
- disown → 이미 실행 중인 프로그램을 터미널과 분리
- kill → 프로세스에 시그널을 보내 종료 (예: kill -TERM pid, kill -KILL pid)
특히 SIGKILL은 무조건 프로세스를 종료하지만, 임시 파일이 남거나 자식 프로세스가 고아 상태가 될 수도 있어서 함부로 쓰면 위험할 수 있어요.
2. 터미널 멀티플렉서 – tmux
여러 개의 프로그램을 동시에 다루고 싶다면 tmux 같은 터미널 멀티플렉서를 쓰는 게 훨씬 편리합니다.
tmux는 이런 특징이 있어요:
- 세션(Session): 독립된 작업 공간. 분리했다가 다시 붙일 수 있음
- 윈도우(Window): 세션 안에서 탭처럼 여러 개 열 수 있음
- 페인(Pane): 하나의 윈도우를 여러 칸으로 쪼개서 동시에 사용 가능
자주 쓰는 명령어는 이런 것들이 있어요:
tmux new -s mysession # 새로운 세션 시작
tmux ls # 세션 목록 보기
tmux attach -t mysession # 기존 세션에 다시 붙기
키 조작 예시:
- Ctrl-b " → 가로 분할
- Ctrl-b % → 세로 분할
- Ctrl-b d → 세션 분리(detach)
특히 원격 서버에서 작업할 때 tmux가 진가를 발휘합니다. SSH 연결이 끊겨도 세션이 계속 살아 있기 때문에, nohup 같은 걸 쓸 필요가 없어요.
3. Aliases – 명령어 단축하기
매번 긴 명령어를 치는 게 귀찮을 때 alias를 쓰면 편합니다.
alias ll="ls -lh"
alias gs="git status"
alias v="vim"
이렇게 안전하게 바꿔서 쓰기도 해요:
alias mv="mv -i" # 파일 덮어쓰기 전에 물어봄
alias mkdir="mkdir -p" # 부모 디렉토리도 자동으로 생성
이런 설정은 .bashrc나 .zshrc 같은 셸 설정 파일에 넣어 두면 매번 자동으로 적용됩니다.
4. Dotfiles – 개발 환경 설정 관리하기
셸이나 에디터, git 같은 프로그램들은 보통 설정 파일을 dotfiles라는 숨김 파일에 저장해요.
예를 들어:
- ~/.bashrc → Bash 설정
- ~/.vimrc → Vim 설정
- ~/.gitconfig → Git 설정
- ~/.ssh/config → SSH 설정
- ~/.tmux.conf → tmux 설정
보통 ~/dotfiles/ 폴더를 만들어서 관리하고, GitHub 같은 데 올려두면 새로운 환경에서도 금방 같은 설정을 쓸 수 있어요. 실제로 적용할 때는 심볼릭 링크를 씁니다:
ln -s ~/dotfiles/bashrc ~/.bashrc
ln -s ~/dotfiles/vimrc ~/.vimrc
5. SSH – 원격 서버 접속하기
서버에서 작업할 때는 **SSH(Secure Shell)**를 씁니다.
- 기본 접속:
ssh user@hostname
- 명령 실행:
ssh user@server "ls -l"
- 키 생성:
ssh-keygen -t ed25519 -a 100
- 공개키 등록:
ssh-copy-id user@server
파일 전송
- scp: 단순한 파일 복사
scp local.txt user@server:/path/
- rsync: 변경된 파일만 동기화
rsync -avz ./project user@server:/path/
6. SSH 포트 포워딩
원격 서버에서 실행 중인 서비스에 로컬에서 접근하고 싶을 때 포트 포워딩을 씁니다.
- Local Port Forwarding
ssh -L 9999:localhost:8888 user@server
→ 로컬에서 localhost:9999로 접근하면 서버의 8888 포트 서비스에 연결
- Remote Port Forwarding
ssh -R 9090:localhost:3000 user@server
→ 서버에서 localhost:9090으로 접근하면 내 PC의 3000 포트 서비스에 연결
정리
이번 글에서 다룬 건 크게 여섯 가지예요:
- Job Control: 프로세스 멈추기, 백그라운드 실행, 시그널 다루기
- tmux: 여러 터미널 세션을 효율적으로 관리
- alias: 긴 명령어를 짧게 단축
- dotfiles: 셸, Vim, Git 같은 설정 파일 관리
- SSH: 원격 접속, 키 인증, 파일 전송
- 포트 포워딩: 원격 서비스를 로컬에서 안전하게 접근
이 정도만 익혀도, 단순히 명령어만 치는 수준을 넘어서 훨씬 효율적인 개발 환경을 만들 수 있습니다.
'프로그래밍공부(Programming Study)' 카테고리의 다른 글
| Security and Cryptography (3) | 2025.09.09 |
|---|---|
| 메타프로그래밍(Metaprogramming)과 DevOps: 빌드·의존성·CI 제대로 이해하기 (0) | 2025.09.08 |
| grep 명령어 유용하게 잘 쓰는 법 (실전 꿀팁 포함!) (2) | 2025.06.03 |
| SRE, DevOps, 개발자의 업무 초점과 주요 지표(Key Metrics) 한눈에 보기 (0) | 2025.03.08 |
| 성능 분석과 최적화: RED 패턴 vs USE 패턴 (0) | 2025.03.08 |
댓글