자바개발자가 많이 쓰는 Linux(Ubuntu) 명령어

devdo·2022년 2월 15일
1

Linux

목록 보기
1/5
post-thumbnail

업데이트 및 설치 명령어

update
설치 되어있는 패키지들의 새로운 버젼이 있는지 확인할 때 해당 명령어를 사용합니다.
=> 이미 있는 패키지 내 시스템 정보 중 최신것을 불러오는 것!

upgrade
위에 있는 apt-get update를 통해서 확인한 패키지들의 최신 버전에 따라서 패키지들의 버전을 업그레이드 해주는 명령어입니다.
=> 최신 패키지를 다시 다운로드하는 것! (위험 💥) - 기존 패키지의 라이브러리가 호환이 안되 기존 어플리케이션이 오류가 날 수 있음!

#apt-get upgrade -y
apt-get update -y

💥 주의) sudo 명령어가 꼭 필요!


apt-get install vim

apt-get install net-tools
# ifconfig

계정 전환

# su:switch user
su - [계정명]

슈퍼 유저로 체인지

# sudo:superuser do
sudo [명령어]

리눅스 시스템 확인

# 리눅스 시스템 확인
cat /etc/os-release
NAME="Amazon Linux"
VERSION="2023"
ID="amzn"
ID_LIKE="fedora"
VERSION_ID="2023"
PLATFORM_ID="platform:al2023"
PRETTY_NAME="Amazon Linux 2023"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
HOME_URL="https://aws.amazon.com/linux/"
BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
SUPPORT_END="2028-03-01"
# 리눅스 커널 버전 확인
cat /etc/issue

# Ubuntu 20.04.3 LTS \n \l
# 사용가능한 shell 리스트 확인
cat /etc/shells
# 현재 작업 shell 확인
echo $SHELL
# 로그인 shell 변경
cat /etc/passwd
sudo chsh [username]

# 메뉴얼
man
# 현재 위치
pwd
# 현재 사용자 이름
whoami
# 현재 시간
date
# 그전 디렉토리로 돌아가기
cd - 
# 파일 내용 찾기 
grep -nir  "world" .

디렉토리 계층 확인

tree

모니터링

# 현재 실행 중인 프로세스들과 해당 프로세스들이 사용하는 
# CPU 및 메모리 사용량을 실시간으로 확인
top

# 시스템 전체 메모리 사용량과 사용 가능한 메모리 양을 보여줌, 단위 KB
free

# 단위 GB
free -h 

https://www.cubrid.com/tutorial/3794195

ps 와 top의 차이점

  • ps는 ps한 시점에 proc에서 검색한 cpu 사용량이다.
  • top은 proc에서 일정 주기로 합산해서 cpu 사용율을 출력한다.
# 디스크 사용량을 보여주는 명령어
df -h

리다이렉션 & 파이프라인

# > (덮어쓰기) : 리다이렉션
 echo "dsg" > test.txt

# >> (덧붙이기) 
 echo "dsg" >> test.txt
# | : 파이프
ps -ef | grep "[찾는 단어]"

netstat -antup | grep LISTEN

시스템 동작 컨트롤

  • systemctl : 특정 데몬을 실행 중지, 재시작하는 명령어입니다.
sudo systemctl status [프로그램명]
sudo systemctl start [프로그램명]
sudo systemctl restart [프로그램명]
sudo systemctl stop [프로그램명]

restart vs reload

  • restart : 프로세스 재시작임으로 이미 재시작할 프로그램에 접속할 사용자들은 다시 재연결해줘야 합니다.
  • reload : conf 설정파일을 다시 읽어 변경된 설정정보를 반영합니다. 이미 연결된 사용자들은 계속 사용하고 이후 연결요청된 사용자들은 변경된 설정파일대로 동작하게 됩니다

    설정변경 시 실제 서비스 할 때는 restart 보다는 reload를 제일먼저 고려해야 될 것 같습니다.

진행되는 프로세스 확인

# netstat 설치
sudo apt install net-tools
netstat -ano | grep "찾는 단어"
# 프로제스 종료
kill -9 [pid]

# 이걸 더 추천
ps -ef | grep "[찾는 단어]"

# 아래 끝까지 다 찾아봄
tail -f [파일 내지 로그파일]

네트워크 확인

# ifconfig 보다 좋아
ip addr

# 둘 다 private ip주소를 가리킴

curl 이란?

HTTP 요청을 보내고 웹 서비스 및 리소스와 상호작용하는 다목적 명령줄 도구입니다. "Client for URLs"의 약자로서, 주로 Linux 및 macOS와 같은 Unix 계열 운영 체제에서 사용되며, 다음과 같은 다양한 HTTP 관련 작업을 수행하는 데 사용됩니다.

  • 예시
# curl [ip주소]
curl localhost:8080/api/v1/memo
ping [ip주소]
open [ip주소]

파일 이동(변경)

mv test.txt test.sh

권한변경

# 기본 설정 권한
# owner | group | other 로 구분되어 지는 것임			 	      
-rw-r--r-- 
# 전체에게 권한 부여
sudo chmod a+x testfile2

#개별단위 권한 부여
sudo chmod g+rw/go+rwx testfile2

# 숫자로도 표기 r=4, w=2, x=1, 4+2+1 = 7, 777은 owner, group, other에게 rwx권한을 다주었다는 뜻!  
sudo chmod 777 [파일] 
# 폴더에 줄때는 -R써야!
sudo chmod -R 700 bin/ 


찾기

ps –ef | grep 'abcdefg'
sudo find . -name "[찾는 단어]"
find . -type f -name "*.txt"
find . -type d -name "*.txt"

생성 및 삭제

# 파일 생성
touch file.txt
# /app/bin 디렉토리의 original.txt라는 파일을 /app/logs에 copy.txt라는 파일로 복사
cp /app/bin/original.txt /app/logs/copy.txt
# 프로젝트를 만들시 -p
mkdir -p /test/projects
rm -rf [파일 or 디렉토리]

압축 풀기

  • tar 압축 풀기
## tar -xvf <압축파일명.tar>
tar -xvf abc.tar
  • tar.gz 압축 풀기
## tar -zxvf <압축파일명.tar.gz>
tar -zxvf abc.tar.gz
  • zip 압축 풀기
## unzip <압축파일.zip>

## EXAMPLE1 : 현재 디렉토리에 압축 해제
unzip abc.zip

## EXAMPLE2 : 특정 디렉토리에 압축 해제
unzip abc.zip -d <경로>

축출

# 파일 내용
cat file.txt
John 30
Sarah 25
Adam 40

# 파일에서 두 번째 필드 추출하기
awk '{print $2}' file.txt

awk로 축출한 내용을 보면,

30
25
40

자바 jar파일 실행

그전에 리눅스에 jdk 설치가 되어야 동작된다!
참고 블로그)
https://velog.io/@mooh2jj/LinuxUbuntu-OpenJDK-11-설치-삭제

java -jar [jar.파일]

nohup 명령어

nohup java -jar abcdefg.jar &

nohup 명령어는 터미널 세션이 종료되어도 백그라운드에서 실행되는 프로세스가 종료되지 않도록 보장합니다. nohup 명령어를 사용하지 않으면, 터미널 세션이 종료되면 해당 세션에서 실행한 프로세스도 함께 종료되어 버립니다.


프로그램 실행

code . -r

stdin & stdout && stderr

  • stdin : 0 (생략가능)
  • stdout : 1 (생략가능)
  • stderr : 2

예시

1)

command > output.txt 2>&1

해석)
command의 표준 출력과 표준 오류 출력을 output.txt 파일로 리다이렉션하며, 2>&1은 표준 오류 출력을 표준 출력으로 리다이렉션합니다. 결과적으로 모든 출력은 output.txt 파일에 저장


2) 활용 사례

nohup docker run -p 8080:8080 mooh2jj/cpu-bound-application-1 > /dev/null 2>&1 &

해석)

  • 2>&1: 표준 오류 출력 (stderr)을 표준 출력 (stdout)으로 리다이렉션하는 것을 의미

  • > /dev/null 2>&1: 표준 출력 및 표준 오류를 /dev/null로 리다이렉션합니다. 이는 명령어 출력을 터미널에 표시하지 않고 버릴 수 있도록 합니다.

  • 맨 마지막 &: 프로세스를 백그라운드에서 실행한다는 뜻. 이 명령어는 해당 프로세스를 실행하는 동안 다른 작업을 수행할 수 있도록 해줍니다.

  • 결과적으로 모든 출력은 nohup.out 파일에 저장

profile
배운 것을 기록합니다.

0개의 댓글