지구정복

[Linux] 02/03 | 문서 편집하기(개념, vi 사용하기), java사용, 접근권한(사용자, 파일, 디렉터리), 프로그램실행(프로세스, 메일보내기, 예약작업) 본문

데이터 엔지니어링 정복/Linux

[Linux] 02/03 | 문서 편집하기(개념, vi 사용하기), java사용, 접근권한(사용자, 파일, 디렉터리), 프로그램실행(프로세스, 메일보내기, 예약작업)

eeaarrtthh 2021. 2. 3. 17:18
728x90
반응형

1. 리눅스

더보기

0. 기초 사용 및 복습

- master 말고 root 관리자로 로그인하기

root 계정은 해당 프로그램에서 거의 신같은 존재

 

비밀번호는 처음 설정한 비밀번호다.

로그인 이후에 터미널을 들어가면 master인 경우 $가 뜨는데 root의 경우 #가 뜬다.

또한 root계정의 홈 디렉터리는 root이다. master계정인 경우 home/master이다.

 

 * 참고

파일시스템이란?

 

컴퓨터 파일에 이름을 붙이고, 저장이나 검색을 위해 논리적으로 그것들을 어디에 위치시켜야 하는지 등을 나타내는 방법

윈도우는 FAT16, FAT32, NTFS이고 리눅스는 ex2, reiserFS, ex3 등이 있다.

 

- 명령어

mount : 외부장치가 디렉토리에 연결

 

- java라는 실행파일 실제 위치 찾기

which java

ls -l /usr/bin/java

ls -l /etc/alternatives/java

 

 

 

1. 문서편집하기

- 기본 개념

리눅스 편집기에는 3가지로 구분된다.

행단위 편집기 : ed, ex, sed

화면단위 편집기 : vi, emacs

GUI 편집기 : gedit

 

vi를 사용하려면 모드를 알아야 한다. 현재 텍스트를 입력하는 것인지 또는 터미널에 명령하는 것인지를 구분하기 위해 모드가 구분된다.

입력 모드와 명령 모드, 마지막행 모드로 구분된다.

같은 글자라도 입력 모드에서는 텍스트로 처리하여 입력되고, 명령모드에서는 텍스트로 입력되는 것이 아니라 편집 명령으로 사용된다.

 

비모드형은 입력 모드와 명령 모드가 구분되어 있지 않은 것을 말한다. 한글과 워드가 비모드형 편집기이다. 

 

vi의 동작모드와 기본적인 명령어는 아래와 같다.

 

 

- 메모장(gedit) 열기

GUI환경인 그놈에서 제공하는 gedit

그놈은 x-window 시스템을 의미한다.

 

 한글사용하려면 아래 그림처럼 한글 누르고 shift + space bar를 누른다.

 

- vi 문서편집하기

 

vi passwd : passwd 파일 열기

:q  : 종료하기

 

입력모드 전환 명령 키

 

vi passwd

i

작업

wq  : 저장하고 빠져나오기

q! : 저장하지 않고 빠져나오기

 

 

커서 이동하기

 

 특정행으로 이동하기

 

 특정행으로 이동하려면 행번호를 알아야한다.

행번호를 보이게 하기 위해서

:set number

를 입력한다.

 

행번호를 없애려면 

:set nonumber

를 하면 된다.

 

20행으로 이동하려면 

:20 (엔터)

를 하면 이동한다.

 

 

내용 삭제하기

 

명령 취소하기

 

복사하기 또는 잘라서 붙이기

yy

p : 현재 커서 아래에 붙이기

 

dd

p

 

3dd : 현재 커서가 위치한 행부터 밑에 3줄까지 자르기

P : 대문자 P는 현재 커서 위로 붙이기

 

 

마지막행 모드의 명령어

 

- 복사 붙여넣기

 

:3y : 3행을 복사하기

:pu : 현재 행 다음에 붙여넣기

:4pu : 4행 다음에 붙여넣기

 

 

- 검색하기

/var : var 문자를 모두 찾아줌

n : 다음 var로 내려감

N : 이전 var로 올라감

 

 

- 바꾸기

 

:s/var/vars  : 현재 행의 var를 vars로 바꾼다.

:%s/var/vars/  : 파일 전체에서 var를 vars로 바꾼다.

 

 

 

2. 리눅스에서 자바 사용하기

 

리눅스에서 할 수 있는 언어는

java

python

c / c++ 

사용하능하다.

 

vi를 통해서 자바 소스코드를 편집해보자.

 

자바프로그램을 실행시키려면 JDK(JER) 가 있어야 한다.

JDK는 기본적으로 오라클에서 만든다.

따라서 jdk를 먼저 다운받는다.

 

su - root

123456

 

yum install java-1.8.0-openjdk-devel : openJDK의 개발자 버전 다운받기

y : 다운로드 시작

 

exit

javac -version

 

 

vi HelloWorld.java

i

:wq

 

javac HelloWorld.java

java HelloWorld

 

 

이번에는 JFrame을 사용해보자.

vi JFrameEx.java

import javax.swing.JFrame;

public class JFrameEx {
        public static void main(String[] args) {
                JFrame frame = new JFrame();

                frame.setTitle( "Title" );
                frame.setSize( 800, 600 );
                frame.setLocation( 100, 100 );

                frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
                frame.setVisible( true );
        }
}

:wq

javac JFameEx.java

java JFrameEx

 

 

nano로 편집하기

 

rm HelloWorld.java

rm HelloWorld.class

 

nano HelloWorld.java

 

ctrl + o :저장하기

ctrl + x : 나가기

 

javac HelloWorld.java

java HelloWorld

 

 

 

3. 파일 접근 권한 관리하기

3.1 파일의 속성

- 파일 접근 권한 보호

리눅스는 파일에 무단으로 접근하는 것을 방지하고 보호하는 기능을 제공한다.

파일의 속성은 아래와 같이 있다.

 

- 파일의 종류

 

파일 속성의 첫 번째 항목은 파일의 종류를 표시한다.

- 는 일반 파일, d는 디렉터리를 의미한다.

 

file 은 지정한 파일의 종류를 알려준다.

 

file JFrameEx.java

file passwd

 

3.2 파일의 접근 권한

먼저 사용자를 먼저 생성해야 한다.

사용자를 생성하려면 root와 root에게 사용자 생성 권한을 위임받은 계정만 할 수 있다.

 

사용자의 기능

1. 로그인할 수 있다.

    사용자 설정파일을 등록된다.

    /etc/passwd

    /etc/shadow

 

2. 로그인 디렉터리가 생긴다.(홈 디렉터리)

    /home/사용자아이디

3. 그룹에 속하게 된다.

 

 

- 사용자 만들기

su - root

123456

tail /etc/passwd

 

아래 1번 계정은 로그인이 불가능한 내부 계정이고

2번은 master 계정임을 알 수 있다.

 

암호가 있는지 확인하려면 아래 명령어를 통해 확인하다.

tail /etc/shadow

 

암호는 암호화되어있어서 확인할 수 없다.

 

adduser user1

passwd user1

123456

 

tail /etc/shadow/

 

새로 만든 유저로 로그인하기

 

ctrl + alt + f3

user1

123456

exit

 

사용자 지우기

사용자를 지우면 사용자 디렉터리는 남아있고 그 외에 사용자 설정이 모두 사라진다.

 

userdel user1

rm -r /home/user1/

 

user1이 사용한 디렉터리까지 모두 지우려면

userdel -r user1

 

 

- 다른 사용자로 접근하기

su 사용자ID  : 해당 사용자의 권한만 빌려서 쓰기, 디렉터리는 기존 사용자환경이다.

su root

123456

 

su - 사용자ID : 해당 사용자 ID로 로그인하기, 디렉터리까지 새로 로그인한 사용자 디렉터리로 변경된다.

su - root

123456

 

 

사용자에서 다른 사용자 또는

사용자에서 root로 갈 때는 반드시 암호가 필요하다.

하지만 root가 다른 사용자로 갈 때는 암호가 필요없다.

 

 

사용자를 그룹에 묶기

 

그룹은 권한의 집합이다.

그룹의 설정파일은 /etc/group에 저장된다.

모든 그룹은 아이디값으로 관리된다.

 

- 접근 권한의 종류

 

읽기, 쓰기, 실행 권한 세 가지로 구성되어있다.

 

접근권한의 표기방법은 다음과 같다.

 

chmod 명령어로 권한 바꾸기

바꾸는 방법은 두 가지가 있다.

 

기호모드 : 접근 권한을 변경하기 위해 문자와 기호를 사용하여 권한을 표시

숫자모드 : 접근 권한을 변경하기 위해 숫자를 사용

 

숫자모드

 

HelloWorld.java 를 444모드로 변경해보자.

현재 HelloWorld.java는 554였다.

 

ls -l

chmod 444 HelloWorld.java

 

 

디렉터리에 대한 권한을 확인해보자.

 

먼저 터미널을 2개 실행하고 하나는 master로그인, 하나는 user2로 로그인한다.

그리고 둘다 home 디렉터리로 이동시킨다.

master 터미널에서

ls -l 명령어를 치면

master라는 디렉터리는 현재 소유자만 읽기쓰기실행이 가능한 상태이다.

user2 터미널에서 master디렉터리를 읽어보자. 그러면 아래와 같이 현재 읽을 수 없다.

master터미널에서 master 디렉터리를 사용자가 읽을 수 있도록 권한을 변경한다.

chmod 704 master

user2 터미널에서 다시 읽으면 읽혀진다.

 

 

 

기호모드

 

현재 JFrameEx.java는 사용자읽기 권한밖에 없다.

소유자에게 x권한과 사용자에게 쓰기 권한을 삭제해보자.

 

 

3.3 기본 접근 권한

 

리눅스에서 파일이나 디렉터리를 생성하면 기본 접근 권한이 자동적으로 설정된다.

일반 파일의 경우 소유자와 그룹은 읽기, 쓰기 권한이 설정되고 기타 사용자는 읽기 권한만 설정된다.

664

디렉터리의 경우 소유자와 그룹은 읽기,쓰기,실행 권한이 설정되고 기타 사용자는 읽기, 실행 권한만 설정된다.

775

 

기본 전급 권한 확인하고 변경하기

 

umask

 

마스크값은 파일이나 디렉터리 생성시 부여하지 않을 권한을 미리 지정해놓는 것이다.

마스크 값이 002일 경우 --- --- -w-이고, 기타 사용자에게 쓰기 권한은 부여하지 않겠다는 의미이다.

005는 --- --- r-x 이고 기타 사용자에게 읽기와 실행 권한을 부여하지 않는 것이다.

 최대 권한에서 마스크값을 뺀 것이 기본 권한이 부여되는 것이다.

 

 파일의 소유자와 소유 그룹 변경하기

 

root계정으로 로그인 한 뒤 home디렉터리에서

 

touch text.txt

ls -l text.txt

를 출력하면 현재 소유자와 소유그룹은 root이다.

 

chown master.master text.txt

ls -l text.txt

를 출력하면 소유자와 소유그룹이 master로 바뀌는 것을 확인할 수 있다.

 

 

사용자 접속 로그 확인하기

 

master 터미널에서 

w 또는 who

를 입력한다.

 

 

 

4. 프로그램 실행하기

프로그램을 실행하는 것을 프로세스라고 한다.

프로세스는 처리하는 cpu와 메모리 할당이 있다.

프로세슷 모두 번호를 가지고 있고 이를 프로세스 번호라고 한다. pid

프로세스 번호를 알아내는 명령어는 ps 이다.

 

ps : 현재 실행중인 프로세스

ps a : 모든 프로세스 확인하기

ps au : 모든 프로세스와 유저까지 출력

ps -ef | grep bash : bash만 들어간 프로세스만 출력

ps -ef | grep root : root가 사용하는 프로세스만 출력

gedit를 키고 ps를 확인해보자.

gedit를 강제로 종료해보자.

kill -9 11474

 

프로세스 상태를 보려면 top명령어이다.

 

 

또한 프로세스는 트리형태로 부모자식 형태로 되어있다.

 

pstree : 모든 프로세스의 트리형태 확인

 

포그라운드/백그라운드

 

특정프로세스 & : 특정프로세스를 백그라운드에서 실행시키는 명령어

jobs : 현재 실행중인 백그라운드 프로세스 모두 출력

 

 

 

 

프로세스를 등록하고 자동실행하기

 

1회만 실행할 때는 at

여러번 실행할 때는 cron

 

먼저 시간을 현재시간으로 맞춰야 한다.

제어판 - 날짜 및 시간 - 잠금해제 - 표준시간대 자동 켬

 

새로운 터미널창을 열고 root 계정으로 들어간 뒤 

yum install mailx

yum install sendmail

 

위 두개를 다운로드 받는다.

systemctl start sendmail.service

 

다시 master 터미널창에서 

mail root : root에게 메일보내기 제목과 내용을 작성하고 . 을 누르면 종료이다.

 

다시 root 터미널에서 

mail 을 치면 메일온 것을 확인할 수 있다. 이때 1번을 누르면 첫 번째 메일의 내용을 볼 수 있다.

 

 

- at 사용하기

 

먼저 atd가 가동되고 있어야 된다. 이를 확인하기 위해

systemctl status atd

가동되어 있지 않다면 systemctl start atd 를 입력한다.

 

at 04:16 pm

명령어입력 -l /home/master/

ctrl + d 누르면 종료

 

at -l : 예약된 작업 확인하기

mail

1

 

 

 

- cron 사용하기

systemctl status crond : cron 실행상태 확인하기

 

 

crontab -l : 리스트확인하기

crontab -e : cron 사용하기

i

35,50 * * * * /usr/bin/ls -l ~master > ~master/list.txt : echo는 화면에 출력하라는 명령어

esc

:wq

crontab -l

 

아래와 같이 매시 35, 50분마다 list가 생성됨을 알 수 있다.

 

 

java HelloWorld

at 04:50 pm

java HelloWorld

at -l

mail

1

728x90
반응형
Comments