빅데이터 서비스 교육/분산처리

리눅스

Manly 2022. 6. 28. 12:47
반응형

리눅스 명령어

date   현재 날짜 

clear  화면정리

history   여태 쳤던 명령어 출력

logname  로그인한 계정명

users  로그인한 유저들의 계정명들

who 들어온 유저들의 계정명,단말기이름, 접속시간, 아이피 등이 나온다

whoami 로그인한 유저정보

 

 

uname 현재 사용중인 시스템에 대한 정보 출력

 

 

옵션은

uname -a 이런식으로 쓴다

 

 

 

hostname   현재 사용중인 리눅스 시스템의 호스트네임 출력

env 시스템에 설정되어 있는 환경변수들을 출력

 

ls 디렉토리에 있는 내용(디렉토리,파일)을 확인한다  ( ls 엘에스) , 파일들의 목록 출력

ls -a : 숨겨진 파일까지 포함해 모든파일 리스트 출력 (리눅스에서 .으로 시작하면 숨김파일)

ls -l : 파일의 상세한 정보 출력

ls -F : 파일의 종류(속성)를 출력   실행파일은:* 디렉토리는: /  심볼릭 링크는: @ 로 표시

ls -R : 하위 디렉토리 리스트 출력

ls -alFR로 4개 동시에 적용가능

 

ex) -rw-r--r--

- : 일반파일

d : 디렉토리

l : 링크파일

 

pwd 현재 디렉토리를 출력

env | grep HOME -> env 결과로 출력된것 중에 HOME이 들어가는 것을 출력   | 를 이용해 명령어를 연결해서 쓸 수 있다.

env | grep PATH -> env 결과로 출력된것 중에 PATH가 들어가있는 것을 출력  ,    | (파이프)를 이용

 

  -파일의 내용을 확인하는 명령어들

env | more -> env를 한페이지씩만 출력하고 추가적인건 more로 스페이스치면 나머지가 출력된다

  more 를 이용해 한페이지씩 출력

 

more /etc/passwd   etc하위 passwd를 한페이지씩 출력

cat /etc/passwd    etc하위 passwd를 한번에 전체 출력

 

tail /etc/passwd      etc하위 passwd의 끝부분 10줄 출력

head /etc/passwd  etc하위 passwd를 앞부분 10줄 출력

 

tail -5 /etc/passwd    etc하위 passwd의 끝부분 5줄 출력

head -5 /etc/passwd  etc하위 passwd를 앞부분 5줄 출력

 

 

 - 출력 방향을 바꾸는 리다이렉션  (  >  )

리눅스 명령어를 통해 화면에 출력되는데 cat /etc/passwd > 파일명.txt    (  >  )를 통해

화면에 출력이 아닌 파일을 만들어 보여준다

 

 

echo + @  뒤의 @를 출력

echo -e have a good time "\n" nice good day       -> have a good time                                                 nice good day

 

 

이스케이프 문자를 사용하기위해 -e를 쓰고,

이스케이프 명령어  "\n"를 써서 뒤의 문자를 줄바꿔서 출력

 

 

 

 (  >>  ) 를 통해 한 파일에 문장들을 추가(appending) 시킬 수 있다

echo "안녕하세요" >> o.txt

echo " 빅데이터분석반 입니다" >>o.txt

echo " 오늘은 리눅스 명령어" >>o.txt
cat ./o.txt

 

안녕하세요
빅데이터 분석반입니다.          <--  다음과 같이 나온다 
오늘은 리눅스 명령어

tail -f ./o.txt :   o.txt의 끝부분에 추가되는 문장들이 실시간으로 출력된다.

 (2개로 한부분에서 o.txt에 추가하면 tail -f 쪽에서 실시간으로 출력된다.)

 

which + 명령어 : 명령어가 어느 디렉토리에 존재하는지 확인

 

history -d 86   : 썼던 명령어 중 86번라인이 지워진다

history -c : 썼던 명령어 중 전체가 지워진다

 

 - putty 프로그램 사용시

드래그하면 : ctrl +c 이고

우클릭하면 : ctrl +v 된다.

Tab키로 자동완성 가능

 

 -디렉토리

. : 현재 디렉토리

.. : 상위 디렉토리

 

cd + /파일명:  디렉토리가 -> 파일명이 있는 디렉토리로 바뀌는데

cd + ENTER : 자신의 home 디렉토리로 온다

cd + ~ : 자신의 home 디렉토리로 온다

 

 - 상대 디렉토리 지정할때 시작은 현재 디렉토리에서 시작

/etc 에 있을때    cd ../home/stduser/로 옮겨갈 수 있다

 

절대경로는 /(root)에서 시작

 

현재 /etc에 있을때 /home/stduser/hiwoo.txt를 보려면

 

more /home/stduser/hiwoo.txt 로 볼 수있고 

 

more ../home/stduser/hiwoo.txt 로 볼 수 있다.

 

more ~/hiwoo.txt  로 볼 수 있다.

 

mkdir 생성할 디렉토리명 -> 디렉토리 생성

mkdir -p ./p/j/m : 하위 디렉토리를 계층적으로 생성할때 없으면 자동으로 생성

rm -r pjm : 하위디렉토리들까지 같이 지운다

 

 - 파일 생성

touch 파일명.txt : 파일의 크기가 0인 빈파일이 만들어진다

cp a b   a파일을  복사해서 b파일명으로 만든다

mv a b  : a파일을 b위치로 이동 (이동 할때 이름 변경 가능)

 

 - 파일찾기

find :  파일 찾기

find . -name "*.txt"  : 현재 디렉토리에서 .txt로 끝나는 모든파일을 찾는다 ( -name : 이름으로 찾을때)

find . -empty : 파일의 크기가 비어있는 (빈파일)을 찾는다

find . -type d : 디렉토리 타입의 파일을 찾는다.   b:블록디바이스파일, d:디렉토리, f:파일, l:심볼릭 링크

find . -type f -name "s*":  파일들 중에 이름이 s로 시작하는것을 찾는다

find . -name "*.txt" -exec ls -l {} \: . -name "*.txt"인것 중에서 ls -l인것을 찾는다.    -exec+명령+{} \;

find A -exec B를 사용해 A인것중에서 B인것들을 찾는다

 

 - 리눅스 환경에서 telnet 접속후 확인 할것

whoami 

uname -a

hostname

pwd

ls

ifconfig : 네트워크 환경 확인

 

 - 파일 내용의 문자열을 찾을 경우

grep 찾을문자열 해당파일

grep stduser /etc/passwd

 

 - 명령어 위치 확인

which grep

whereis grep : grep명령어가 있는곳, grep의 매뉴얼(사용법)이 있는위치 등이 나온다

man grep : grep의 매뉴얼이 나온다

 

 

 

에디터 (vi, nano) 활용

 vi에디터 : 윈도우 메모장 비슷

vi 파일명 : 저장할 파일명과 vi 파일명을 치고 vi에디터로 들어가면

 

 -편집모드: a, i, o(소문자), O(대문자o)  (입력모드)

a: 커서위치 뒤에 문자열 입력

i: 커서 앞에 문자열 입력

o:  한칸씩 아래로 벌려지면서 편집모드

O:  위로 한칸 늘리고 편집모드

 

 - 명령모드에서

dd: 한칸이 지워진다

ddd: 3칸이 지워진다

x: 한글자가 지워진다 (x키 누르는 횟수에따라 지워짐  5번누르면 5개 지워진다)

yy: 한 줄을 복사   후 (ctrl+c)

p: 붙여넣기 (ctrl+v)

cw: 단어를 수정할때 사용

u: 직전작업 실행취소 (ctrl+z) 한번만 작업취소 가능

e!: 최초로 읽어왔던 파일로 되돌려준다.

:set number   -> 몇번째줄인지 숫자를 보이게 한다. (줄번호 확인)

 

 nano에디터

nano na_jm4   : na_jm4라는 파일명으로 nano에디터 접속

 ctrl+x -> y -> enter : 저장후 종류

 ctrl+k -> 한줄 지우기

 shift+alt+3 -> 줄번호 확인

 ctrl+w -> 원하는 글자 검색

복사할 줄 가서 alt+a 후 드래그해서 복사할 블록지정 후 alt+6 -> 복사할 범위설정

후 ctrl+u

alt+u : 직전작업취소(undo)

alt+e : 다시실행(redo)

 

ls -l  : 파일의 권한 부여, 삭제

-rw-r--r-- 1 stduser stduser   30 Jun 29 01:26 jm

rwx : r 읽기, w 쓰기 , x 실행   권한

 

4   2   1

r   w   x

0  0  1  = 1

0  1  0  = 2

0  0  1 = 1

1  0  0  = 4

1  1  1  = 7

 

                 6        4           4                   755 -> 자신은 모든권한, 타인/그룹은 읽기, 실행 권한

   -          rw-         r--         r--                         rw-        r-x            r-x

속성   자신의    그룹의  타인의                    자신      그룹        타인

              권한    권한      권한

              (u)         (g)         (o)

u: user ,  g: group,  o: other

 

지금 이건

  자신의권한: 읽기, 쓰기 가능

 그룹, 타인 권한: 읽기만 가능

 

 - 파일에 권한 부여

1.

chmod 755 jm       :  자신은 모든권한, 타인/그룹은 읽기, 실행 권한으로 권한 변경

하지만 ./jm으로 실행하려면

./jm: line 1: 안녕하세요: command not found 오류 뜨는데

 

->  echo "echo 안녕하세요. 반갑습니다?" > jm    를 통해      jm파일에 

안녕하세요 반갑습니다를 넣고 ./jm으로 봤을때 바로 출력 될 수 있게 echo 안녕하세요. 반갑습니다?로 넣는다.

 

cat jm 으로 봤을때는

 -> echo 안녕하세요. 반갑습니다?로 나온다.

 

2.

chmod u+x jm    : 자신에게 실행권한 부여

chmod u-x jm    : 자신에게 실행권한 삭제

 

나노파일 만든후

mkdir mkaa

cd mkaa

echo 안녕? > jmj.sh

echo "echo 안녕?" >> jmj.sh

echo "빅데이터분석 서비스 개발자 과정반"

echo "인원 25명"

echo "리눅스 분산처리"

echo "수업"   를 나노에 저장 

그리고 나노파일 권한부여해서 실행하면  출력된다.

 

 

echo $(date '+%y-%m-%d') : 날짜 형식 지정해서 출력

nano proc.sh   쉘파일 만들고 나노 들어가서

나노에서 다음 명령어 입력하면

echo " 오늘은 $(date '+%y-%m-%d')입니다." 

 

[ 문제 ] 

아래의 결과을 얻기위한 Shell Program를 작성하시오..
"proc.sh" 실행 파일을 만드시오.

{아래 문자를 화면에 출력}
"오늘은 2022-00-00일 입니다." : 힌트: echo

{아래 문자를 화면에 출력}
"--- 일괄처리를 시작합니다.---" : 힌트: echo

"--- 디렉토리 관리.---"  : 힌트: echo

{명령어 실행}
shdir 디렉토리 생성  --> 힌트:mkdir
shdir 디렉토리로 이동 --> 힌트:cd  

{아래 문자를 화면에 출력}
--- 파일 생성 및 복사--- <출력>

{명령어 실행}
login한 사람들의 목록을 조회하여 w-file이름으로 저장하기 --> 힌트:who
서버명을 조회하여 w-file에 추가하기 --> 힌트:hostname
환경파일을 조회하여 env-file 생성하기 --> 힌트:env
빈 file 생성하기: 파일 이름 "tch-file"  --> 힌트:touch

빈 파일로 생성된 파일을 tmp-file로 복사하기  --> 힌트:cp
빈 파일로 생성된 파일을 mv-file로 이름을 바꾸기  --> 힌트:mv 

{아래 문자를 화면에 출력}
--- 빈 파일 찾아보기.--- <출력>

{명령어 실행}
현재 디렉토리에서 빈 파일을 찾아 상세한 목록으로 출력하기 
  emp-file 로 만들기 --> 힌트: find 

{아래 문자를 화면에 출력}
--- 일괄처리가 잘 처리되었습니다.--- : 힌트:echo

echo " 오늘은 $(date '+%y-%m-%d')입니다."
echo
echo ---일괄처리를 시작합니다---
echo
echo --- 디렉토리 관리 ---
mkdir shdir
cd shdir
echo
echo ---파일 생성 및 복사 ---
echo
who > w-file
hostname >> w-file
env > env-file
touch tch-file
cp tch-file tmp-file
mv tch-file mv-file
echo
echo --- 빈 파일 찾아보기 ---
find . -empty -exec ls -l {} \; > emp-file
echo --- 일괄처리가 잘 처리되었습니다---

파일 전송 프로토콜(File Transfer Protocol, FTP) - FileZilla , 노트패드++ 사용

 

 - 쉘 명령어

printf :  한줄 내려서 출력

$aa  :  $를 통해 변수안의 값을 출력 할 수 있다.

 aa= "mmmmmm"    -> echo "$aa"   ->   mmmmmm 출력

 

arr=("hi" "ho" 1 2 3 4)

echo ${arr[0]}   -> hi 출력

 

function aa(){
> echo "이 함수는 더하기 함수."
> }

 

aa
이 함수는 더하기 함수.

 

  GNU nano 5.4                                     sprint.sh
echo "*"
echo "**"
echo "***"
echo "<< 별을 출력 합니다.>>"
echo
echo -n  "출력할 수를 입력 하세요>>  "

read num

a=1

while [ $a -le $num ]
do
        b=1
        while [ $b -le $a ]
        do
        echo -n "*"
        b=`expr $b + 1`
        done
        echo
        a=`expr $a + 1`
done
exit 0

read num  : 입력받는 숫자를 num 변수에 저장

$a -le $num : 변수 a가 num보다 작거나 같을때

 

 

리눅스 관리자 계정

pi /raspberry

 

sudo adduser 계정명

비밀번호로               계정생성 가능

 

su 계정명 으로 비밀번호 치면 다른 계정으로 접속 가능

 

logname : 세션 최초 로그인한 계정명 출력

whoami : 지금 세션 이용자 출력 (su로 다른계정접속하면 바꾼 계정명이 출력) 

 

cp -r ../stduser/p/j/* ./   -> 새로 만든 계정에 여태 했던 파일들을 복사해서 넣는다

 

 

grep jm /etc/passwd로 다음을 출력

jm:x:1017:1018:jm,,,:/home/jm:/bin/bash

 사용자계정: jm

암호:x

사용자ID:1017

그룹:1018

계정에대한 설명: jm

계정의 홈디렉토리: /home/jm

계정의 사용 쉘: /bin/bash

 

sudo userdel -rf jm    유저 계정 삭제

 

시스템 종료, 재시작: reboot

종료: halt

shutdown -h now: 즉시종료

반응형