[Alex] 데이터 장인의 블로그

[Linux] 데이터 엔지니어링을 위한 sed, xargs, nohup, scp 기본 명령어 정리 본문

Linux&OS

[Linux] 데이터 엔지니어링을 위한 sed, xargs, nohup, scp 기본 명령어 정리

Alex, Yoon 2021. 12. 11. 22:38

sed : 찾아바꾸기 

sed 's/찾을 텍스트/바꿀 텍스트/g' 파일명으로 사용함

  • -i 옵션은 --in-place를 의미함
  • s는 문자열 치환을 의미
  • g는 모든 라인에 적용한다는 의미. 작성하지 않으면
  • sed 's/root/ROOT/g' /etc/group | grep ROOT
  • sed 's/root/ROOT/g' /etc/group | grep root
  • sed -n '3,7p' /etc/group -> 3에서 7번 row까지 호출

watch : 메모리 상황 보기 (+free, nvidia-smi)

watch -n [초 단위] [명령어]

  • watch -n 1 nvidia-smi
  • watch -n 1 free -m 

alias : 별칭 설정 

alias : 별칭

  • alas ll = 'ls -al'

xargs : 출력된 결과를 인자값으로 활용하여 다른 커맨드에서 활용할 수 있게 만들어주는 명령어 

주로 find, ls, cat 뒤에 파이프로 사용됨. 앞 명령어의 결과를 다음 명령어의 입력으로 넘기는 파이프와 함께 사용해, 앞 명령어의 출력값을 다음 명령어의 인자로 넘긴다

1. find를 이용해 mtime이 30일 이상된 파일을 .bak으로 바꾸기

find . -mtime +30 | xargs mv -i {} {}.bak

2. *.mp3 지우기

(Tip) 그러나 찾고 삭제는 find -delete가 좋음. 아래 예제처럼 하면 파일 하나당 서브 프로세스가 생성됨

find . -name '*.mp3' | xargs rm

3. 엄청 많은 파일을 지워야 하는 경우 (rm) -> 오류메시지 발생 : (/bin/rm Argument list too long)

$ find ~ -name ‘*.log’ -print0 | xargs -0 rm -f

4. find 명령으로 찾은 리스트를 ls -l 로 모두 출력하는 결과

$ find /etc -name "*.conf" | xargs ls –l

nohup

  • 리눅스에서 쉘 스크립트 파일이나 파이썬 파일 등을 데몬 형태로 실행시킴
  • 터미널 세션이 끊겨도 실행을 멈추지 않고 동작함
  • &을 사용 => 프로세스 실행할 때 백그라운드 동작하도록 만듬
  • nohup으로 실행할 파일은 권한이 755 이상이어야 함

사용 방법

  • nohup shell.sh &
  • 종료하는 두가지 방법
    ps -ef로 pid 번호 찾은 후
    kill -9 pid번호
    • ps ef | grep shell.sh
  • 로그 확인 
    • nohup을 만들면 nohup.out 파일이 생성됨

scp

  • Secure Copy(remote file copy program)의 줄임말
  • ssh을 이용해 네트워크로 연결된 호스트간에 파일을 주고 받는 명령어
    • -r : 재귀적으로 폴더 복사
    • -P : ssh 포트 지정
    • -i : ssh identify file을 지정해 파일 이동
  • local -> remote
$ scp local_path user@ip:remote_directory
  • remote -> local
scp user@ip:remote_directory local_path
  • remote -> remote
scp user1@ip1:source_remote_directory user2@ip2:target_remote_directory

 

/dev/null

출력 스트림을 버릴 경우 사용됨

  • echo "hello" # hello echo hello > /dev/null # 아무것도 출력되지 않음
  • /dev/null
    • 주로 2>&1과 함께 사용 
    • 2(표준 에러)를 1(표준 출력)으로 바꿔서 redirect!
    • & : 백그라운드에서 실행
    • rm test > /dev/null 2>&1

기타 

pbcopy : 명령어의 결과를 클립보드로 복사

  • echo "hihi" | pbcopy

python 파일경로를 복사하고 싶은 경우

  • echo `which python` | pbcopy

현재 경로 복사하고 싶은 경우

  • echo `pwd` | pbcopy
반응형
Comments