카테고리 보관물: 리눅스 Linux

tcpdump로 UDP 데이터가 어느 호스트에서 오는지 확인하는 법

제목 그대로입니다.

UDP는 TCP와 달리 커넥션(connection)을 맞는 방식이 아니기 때문에 바로 지금 데이터를 보내는 호스트들이 어떤 것인지 확인하기가 힘듭니다.

역시 tcpdump로 확인할 수 있습니다. 예를 들면 8125포트로 UDP데이터를 보내고 있는 호스트를 알아내려면 다음과 같은 코맨드를 실행하고 잠시 지켜보면 됩니다.

참고로 8125는 statsd가 데이터를 수신하는 포트이고 statsd는 시스템이나 애플리케이션의 상태를 모니터링하기 위해서 시그널 데이터를 받는 조그만 시스템입니다.

sudo tcpdump -i eth0 udp port 8125 -vv -X

E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).

우분투에서 패키지를 설치하다가 의존성이 깨지거나 하게 되면 그 뒤로 apt를 실행할 때 마다 에러가 발생합니다. 여간해서는 해결이 잘 안되는데요.

E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

이렇게 하면 됩니다.

sudo apt-get -o Dpkg::Options::="--force-overwrite" install --fix-broken

출처: https://askubuntu.com/questions/1044817/failed-installation-of-package-breaks-apt-get

rsync – ‘cannot delete non-empty directory’ errors

로컬에 있는 파일과 모델, 데이터 등을 리모트의 어딘가로 싱크하는 것은 데이터사이언스 작업을 하면서 빈번하게 있는 일입니다. 복잡한 파이프라인을 작성할 것은 아니기 때문에 간단하게 rsync를 사용할 때가 많습니다.

제가 주로 사용하는 옵션은 이렇습니다.

rsync -avzrub --delete /tmp/source /tmp/target

그런데 이 옵션을 실행하다 보면 다음과 같은 에러가 나올 때가 있습니다.

rsync 'cannot delete non-empty directory' errors

–delete 옵션은 소스에 없는 것들은 타겟에서도 지우라는 명령입니다. 이때 소스에 없는 파일과 디렉토리는 타겟에서도 지워야 하는데 디렉토리를 지우지 못하는 것입니다.

원인은 -b 옵션 때문인데 -b 옵션은 타겟에서 파일을 지욱 때 만약을 대비하기 위해 파일을 ~가 끝에 붙은 이름으로 변경해서 백업하는 기능입니다. 이 옵션으로 인해 지우지 못하게 됩니다.

-b 옵션을 제거하면 문제가 해결됩니다.

만약 그래도 백업을 해야 하고 특정 디렉토리는 다르게 관리해야 한다면 –exclude 옵션으로 그 디렉토리를 제외하고 그 디렉토리는 다른 옵션으로 rsync를 수행해야 합니다.

쉘스크립트 7일전 날짜 가져오기 – Shell script get date of 7 days ago

쉘스크립트에서 7일전 (1주일전) 날짜를 가져오는 방법입니다.

별로 어렵지 않은데 막상 쓰려면 기억이 잘나지 않죠.

아래와 같이 하면 됩니다.

date -d "7 days ago" +"%Y-%m-%d"

7일전부터 어제까지 7일간의 구간을 계산하려면 아래와 같이 하면 됩니다.

yesterday=$(date -d "1 days ago" +"%Y-%m-%d")  # 어제 날짜
ago7days=$(date -d "7 days ago" +"%Y-%m-%d")  # 7일전
echo "yesterday:$yesterday, ago7days:$ago7days"

초간단 Node.js 업그레이드 방법

Linux 서버에 설치된 Node.js를 버전업하는 방법입니다.

요약

  • npm으로 n 이라는 영어 1글자 짜리 이름의 패키지를 설치
  • n으로 stable, lastest 등을 선택해서 원하는 버전으로 업그레이드

stable(안정판), latest(최신판)중에서는 안전하게 stable을 선택하는 것이 좋습니다.

명령어

아래에 적어둔 명령어를 따라서 순서대로 하면 됩니다.
root 권한이 있어야 합니다.

node -v  # node.js 버전 확인
sudo npm cache clean -f  # npm 캐시 삭제
sudo npm install n  # n패키지 설치
sudo n stable  # stable로 설치
# 결과는 아래와 같음
# installed : v16.13.1 (with npm 8.1.2