맙소사 2021. 4. 19. 10:36

21-03-19 

 

멀티부팅 : 파티션을 나눠서 부팅할 때 운영체제를 선택하여 구동
가상머신 : 가상의 컴퓨터 안에서 구동

 

기존 아이피와는 다른 가상 아이피를 할당받아 가상머신을 구동함 
oracle virtualbox 

 

가상컴퓨터 RAM은 본체의 반절까지가 적당함 (본체가 8GB일때 가상은 4GB)


21-03-22

 

리눅스 종료 방법
shotdown 시스템 전원 끄거나 종료하는 명령어 root계정에서만 가능함
-r 재부팅
-h 시스템 종료 
-c 예약취소
-k 종료하지않고 접속한 사람들에게 메시지 전송

shutdown -r now == reboot == init 6
init 0 == poweroff == halt -p

init 명령어 뒤에 붙는 숫자 : 런레벨 (run level)
0 종료모드
1 시스템복구 : 단일사용자
3 텍스트모드 다중사용자
5 그래픽모드 다중사용자
6 reboot

 

etc > motd 
저 파일 수정하면 부팅 시 안내메시지 띄우는 내용 쓸 수 있음

 

su root 루트계정 접속하기 
su 계정명  : 계정변경

 

vi motd - vi에디터 접속

<편집모드로 바꾸기> 

a 커서 오른쪽
A 문장 맨 오른쪽
i 커서 왼쪽
I 문장 맨 왼쪽
o 행 아랫줄
O 행 윗줄
u 실행취소
y 복사
yy 한 줄 복사
p 붙여넣기
마우스우클릭 붙여넣기

키보드 [esc] : 모드바꾸기

:q 종료
:q! 강제종료
:w 저장
:wq! 저장 후 종료 

 

swp <작성중인게 저장이 안됐을 경우 뜨는 친구
vi -r 작성중인 파일명 :recovery로 복구하면됨 


21-03-23

 

v 비주얼모드(블럭지정할때 사용)
마우스로 드래그 한 후
우클릭하면 커서가 위치한곳에 붙여넣기 됨

 

d 선택영역 잘라내기
dd 행 잘라내기 
3dd 이하 3행 잘라냄: 앞에 숫자 행 수 만큼 잘라낼 수 있음

dw 단어 잘라내기
3dw 3단어 잘라내기: 앞에 숫자 행 수 만큼 잘라낼 수 있음

 

x 커서 위치에 있는 글자 삭제
X 커서 앞글자 삭제

 

이동
[[ 블록 맨 앞
]] 블럭 맨 뒤
0 행의 맨 처음(탭/공백포함)
^ 행의 맨 처음(공백제외)
$ 행의 맨 뒤

 

gg 문서 맨 처음
g 문서 맨 끝

 

/찾을 내용
n 찾은 대상으로 이동
N 이전 대상으로 이동

 

(단어 바꾸기 기능
:%s/이전단어/바꿀단어/옵션
옵션에다 g를 넣어야 전부 다 바뀜
안 넣을 경우 문장의 첫번째 단어만 바뀜
예를들어 해당 페이지 내 모든 '사과'를 '과자'로 바꾸고 싶을 경우
:%s/사과/과자/g  

 

:set number 행번호표시하기
:set nu
:55 55번째 줄로 이동
     또는 55 누르고 shift + G

 

작업 중 ctrl + z 를 눌러서 화면이 날아갔을 경우 뒤쪽에서 계속 진행됨
jobs를 누르면 background에서 작업중인 데이터 목록이 보여짐
fg 1 을 누르면 작업중이던 일을 불러올 수 있음

cd ..  상위 디렉토리로 이동
pwd 현재 디렉토리 표시
mkdir /home/test 절대경로
디렉토리생성
cd /home/test/temp/ 절대경로 지정 이동

cp 기존파일명 새로운파일명 : 파일복사하기

rm 파일명 파일삭제
rm -rf 폴더명 디렉토리 삭제
(내용물 전부 삭제)
rmdir 디렉토리 삭제
(내용물 있으면 안됨)
mv 파일명 ../ 상위폴더로 이동
mv 파일명 바꿀파일명 파일명 변경

ls -l
ll
둘 다 리스트 보여주는 친구들

 


21-03-24

 

find -name '*.txt' 이름이 .txt로 끝나는 것들을 찾음 
* 와일드카드같은느낌
find -user 유저명
find -perm 755 권한 
- 허가 거부 : root에서 접근권한을 제한한 파일이나 디렉터리에서 뜸
 
(시작지점 지정)
find . 
현재 디렉터리와 하위 디렉토리를 포함해 모든 파일과 디렉토리를 찾음
find / 
home디렉토리부터 전부 다 찾아냄
 
find . -type d
(하위포함) 현재 디렉토리에 있는 모든 디렉토리타입을 찾음
find . -type f
(하위포함) 현재 디렉토리에 있는 모든 파일타입을 찾음

find / -nouser -o -nogroup
-nouser 소유자가 없음
-o 또는 연산자
-nogroup 그룹이 없음

find /home -ctime -2 -ctime +1 -ls 

ctrl + c    중간종료
 
tail -f messages

-f 꼭 써야함
<로그모니터링할때 제일 좋음>
전자정부프레임워크 log4j의 로그를
실시간 확인이 필요할 때 많이 사용.
텍스트 파일의 끝 부분을 보여줌. 
옵션 없이 사용하면 기본 10줄 출력. 
실시간으로 쌓이는 로그를 원하는 파일로 저장도 가능

마지막 10줄 출력 후에도 계속적으로
해당 파일의 내용을 동적으로 확인할 수 있음

 

tail -f messages > /home/test/log_20210324_1.txt

head -30 /var/log/messages | tail >/home/test/log_20210324_1.txt

 

messages의 21번째 줄 부터 30번째 줄 까지의 내용을 txt로 저장
파이프 기호 ( | ) 는 명령어끼리 연결해줌

tail 아래 10줄 ? 

 

more
텍스트 파일의 내용이 긴 경우 화면(page)단위로 출력
more /var/log/messages
파일의 내용을 한 페이지 씩 출력

 

more -20 /var/log/messages
파일의 내용을 20줄 씩 한 페이지 단위로 출력

ls -l /var/log  | more
해당 폴더의 내용을 한 화면씩 출력

------------------------------------------- grep 디렉토리 위치에서 문자열 탐색
grep(Global Regulat Expression Print)
텍스트 파일에서 특정 패턴(문자열)을 갖는 줄을 찾아서 출력
문자 찾을때 정말 중요함

 

grep println * 안에 내용물 첫줄만 나옴

 

grep . println *
현재 디렉토리의 모든 파일에서 
println이라는 문자열이 들어가 있는 줄을 모두 찾아 출력

 

grep -c println * 각 파일별 println가 포함된 개수 표시
grep -h println * 파일명이 생략된채로 println이 속한 문장을 출력

 

grep "[^0-9]" /home/test/gugu.java

(정규식 사용 가능) gugu.java 파일 내에서

정규식에 해당하는 문자가 속한 모든 라인 출력

^[S] S로 시작하는 문자 출력
[^S] S를 제외한 문자 출력
[0-9] 숫자
[c.t] c와 t 사이에 아무 문자나 들어갈 수 있음
온점 개수만큼 문자 수 가능인듯 ?
c[ai]t c와 t 사이에 a와 i만 들어갈 수 있음 
at*r t가 올 수도 있고 안 올 수도 있음
s[ao]*r a 또는 o가 올 수도 있고 안 올 수도 있음
sa.*re$ sa 뒤에 어떤 문자(.)든지 오거나 안 올 수(*) 있고
문자열의 마지막이 re로 끝나야 함
. 아무 한 문자를 의미함. 무조건 존재해야함!

------------------------------------------- / vi 화면에서 파일 내 문자열탐색

exit 종료 명령어 : 로그인한 사용자 로그아웃하는거임

 


21-03-25

 

tail -n 3 /etc/passwd 
유저 리스트 확인
 
사용자 추가할때는 superuser(root)로 접속해서 해야함
 
passwd [유저명]
유저비번변경 

usermod -g [그룹명] [유저명]

userdel [-r] [유저명]
유저삭제
-r 을 붙일 경우 유저의 홈디렉토리까지 함께 삭제해줌
 
chage -l tester3


groups [유저이름]
현재 속한 그룹정보를 알 수 있음
 
usermod -g 바꿀그룹명 유저명
유저가 속한 그룹을 바꿀 수 있음

gpasswd 그룹명
그룹 암호 바꾸기

gpasswd -A 유저명 그룹명
해당 유저를 그룹의 관리자로 임명
 
etc/skel
새로운 사용자의 홈 디렉토리에
기본으로 삽입할 파일을 넣어두면 됨
 
파일질라
클라 : 서버에 접속ㅎㅐ서 데이터를 받음
서버 : 서버에 있는 파일들을 공유

 


21-03-26

 

1) 서버
- Filezilla 서버가 설치되어있어야 함(Wu-ftpd, Proftpd,Vsftpd)
2) 클라이언트
-ftp 패키지를 설치해야 ftp명령을 이용할 수 있음
3) 사용법
- ftp [-n] Hostname 또는 IP-Ad
 
ftp 아이피주소로 접속이 안 될 경우(에러메시지) : 
방화벽을 전부 해제하면 접속이 가능해짐
ftp 아이피주소로 접속이 안 될 경우(아무것도 안뜰경우) : ftp 재설치
 
ps aux | grep ftp
ftp 설치여부 확인함 

ls 디렉터리의 리스트 출력 ( == dir )
get 원격 서버의 파일을 로컬(리눅스)로 가져옴
mget 터미널(리눅스)파일을 서버로 가져옴

put 로컬 서버(리눅스)의 파일을 원격 서버로 전송
mput *.* 로컬 파일 여러개를 서버로 보냄
*의 경우 아무문자나 올 수 있따는 뜻
*.*은 아무 이름의 아무 확장자(모든파일)를 뜻함

mkdir 서버 디렉토리 생성(새폴더)
rmdir 서버의 디렉토리 삭제
status 서버상태출력
 
rename 이전파일명 바꿀파일명

delete 파일명 :삭제
mdetele 파일명 :모두삭제

cd 디렉토리 이동

close 접속 끊음
open 새로운 접속

 

압축
tar(tape archive)
옛날옛적에는 테이프 장치 백업할 때 씀
현재는 여러 파일들을 하나의 파일로 묶음

yum remove unzip
yum install unzip

tar -cvf today.tar today 압축 (.tar)
tar -xvf today.tar 압축해제 
tar -zcvf today.gz today 압축 (.gz) 
tar -zxvf today.gz  압축해제 

폴더이름뒤에 언더바 붙이면 보통 삭제된것으로 간주함
폴더 삭제보다는 폴더명을 바꿔서 백업한다는 의미로 사용
psb_

 

zip, unzip

bzip(압축)
bunzip2(해제)

  - gzip(tar.gz)보다 압축률이 좋지만 압축시간이 더 길다.
  - bzip2로 압축하면 파일명 뒤에 .bz2가 붙음 
  - 압축해제는 bunzip2 명령을 사용
  - bzip2 psb.tar =>   psb.tar.bz2

링크 : 하드링크  / 소프트링크
소프트링크 : 바로가기 같은 녀석


21-03-29

 

APM setup
  - Apache(웹서버)
  - PHP(c계열 언어)
  - MySQL ->MariaDB (데이터베이스)

 

 - 프로그램설치
리눅스에 사용되는 프로그램은 C언어로 된 소스파일을 tar(tar.gz, tar.gz2, tarxz, *.rpm등)로 압축하여 배포됨.

소스프로그램은 GNU 웹사이트나 관련 프로그램 사이트에서 무료로 배포됨

배포판 기본 관리 기법 온라인 패키지 관리기법
*레드햇 계열 *RPM *YUM
*데비안 계열 Dpkg *apt-get
수세 계열 YaST zypper

1. RPM 개요
  - Redhat 회사에서 만든 패키지 관리 기업
  - *.rpm 형태의 파일로 배포
  - rpm 명령을 사용하여 손쉽게 설치 및 갱신, 제거, 검증, 질의 등 관리 가능

sendmail-8.12.8-6.i386.rpm
sendmail 8.12.8 6 i386
패키지 이름 버전 릴리즈
한 버전의 패키지를 몇 번 빌드했는가?
아키텍쳐
사용 가능한 시스템
(i386 : 32비트)

httpd-2.4.6-3.fc21.x.86_64.rpm

httpd  웹(아파치)
fc21 fedora 21 (리눅스 버전)

 

[ MySQL 설치 ]
1) yum -y install mysql
2) yum -y install mysql*server* 서버설치
3) rpm -qa | grep mysql 프로그램 설치 확인
4) service mysql start mysql demon 서비스를 시작 (restart / stop)
5) ps aux | grep mysql  프로세스 기동 여부 확인
6) mysqladmin -u root password 'java'
7) mysql -uroot -p mysql 접속 (root 계정으로)

rpm -qi [이름] 패키지 설치 확인

 

[ yum ] --의존성문제 해결해주는 아주 좋은 yum 
Yellowdog Updater Modified rpm 기반의 시스템에서 패키지를 손쉽게 설치해주고
자동으로 업데이트를 수행하는 명령행 기반의 유틸리티
rpm 패키지 설치시에 가장 많이 발생하는 의존성 문제를 자동으로 해결
(압축풀기 > 디렉토리이동 > configure > 의존성 검사 필요, gcc버전 *.gcc / *.make 등 )

 

-y  모든 질의에 yes라고 자동 답변해줌
-v  자세한 정보를 출력(--verbose)

yum list all 설치된 전체 패키지 출력
yum list installed 설치된 패키지 출력
yum list updates  설치된 패키지 중 업데이트가 필요한 대상 출력

 

yum list all | grep mysql  mysql에 해당하는 설치패키지 출력  |로 문장 연결

 

yum info mysql-server mysql-server 정보 출력
yum update mysql-server mysql-server 업데이트
yum search httpd httpd와 일치하는 항목 탐색
yum search httpd client httpd와 client 둘 다 일치하는 항목 탐색
yum history 내역나옴
yum remove 지우는거임

 

yum list installed | grep httpd
rpm -qa | grep httpd
rpm -qi | grep httpd
ps aux | grep httpd

 

yum -y install httpd 설치
service httpd start  서비스 시작

 

systemctl -l status httpd.service httpd가 성공적으로 시작된 경우 관련 정보 상세보기
systemctl restart httpd.service 웹서버 설정 변경 시 데몬 수동재시작
systemctl enable httpd.service 부팅 시 웹 서버 활성화

 

vi 모드
/검색어 입력 (n 다음 검색어 찾기)
# 주석처리

 

DirectoryIndex 가장 먼저 인식되는 파일

 

Centos8 방화벽 설정
1) root 계정으로 접속
2) cd /etc/firewalld/zones

3) vi pubilc.xml 안에 이하 문장 추가

<port protocol="tcp" port="80" />
4) firewall-cmd --reload

 

 

wget  https://www.php.net/distributions/php-8.0.3.tar.gz

웹에 있는 php 다운로드 경로 linux에서 실행하기ㅣㅣ

 


21-03-30

 

WinSCP 프로그램 : 리눅스 환경을 윈도우 뷰로 확인할 수 있음
소유자의 파일만 수정이 가능하기 때문에 수정을 하고 싶은 경우 권한을 넘겨준 후 수정하면 됨
윈도우와 리눅스 간 파일 이동은 드래그도 가능

 

\ enter : 다음줄로 넘어감

이벤트 : 문제가 발생했지만 내가 해결할 수 있음
이슈 : 에바오류 

 

ctrl WW : html화면과 php화면 간 이동

 


21-03-31

 

users  로그인 되어있는 사용자 아이디 출력
who  현재 시스템에 로그인 되어있는 사용자 출력
w 로그인되어있는 사용자와 그 사용자가 수행중인 작업출력
id ddit 
id  그룹아이디 유저아이디 확인(아이디 정보 출력)

groups 사용자가 속한 그룹명 출력
groups ddit ddit라는 사용자가 속한 그룹명 출력

lslogins -L 마지막 로그인 일시 출력
lslogins -u 사용자 정보만 간략하게 출력
lslogins -u -L

 

useradd -u 1111 -g groupname -d /home/test/username -s /bin/bash username

 

grep /bin/bash /etc/passwd 유저 목록 확인

 

passwd gne 유저비밀번호변경
------------------------------------------------------------------

ssh 아이디@아이피 22번 포트로 접속

 

wall  전체 채팅 쓸 수 있음
로그인한 모든 사용자의 터미널에 메시지 전송
mesg n 메시지 수신 거부(루트제외)
mesg y 메시지 수신승인
write 유저명  해당 유저 페이지에 채팅 쓸 수 있음
해당 페이지 나오려면 ctrl + D

 

cal 01 1994 달력출력
date  날짜 

uname 리눅스이름
uname -r  버전
df -hT
df -h 디스크 크기, 사용량, 남아있는 용량 정보 출력
du 파일이나 디렉터리들이 디스크에서 차지하고 있는 크기 출력
     -h   현재디렉토리 총 사용량
     -sh *  각 디렉토리 파일별 총 용량
du -sh ~ddit ddit가 사용하는 사용량
stat  파일 또는 파일 시스템 관련 정보 출력

 

pstree 프로세스의 상태를 트리 구조로 출력
pstree -h

top 동작중인 프로세스의 상태를 실시간으로 화면에 출력
top -d 2 -p 1222 PID값이 1222인 프로세스의 관련정보를 2초 간격으로 출력

 

top -bn 3 > /home/test/top.log

top 명령어를 3회 수행한 뒤 top.log파일로 남김

 

kill -9 134661 프로세스 강제종료
killall -9 -u user user(사용자아이디)의 프로세스 전부 강제종료
killall httpd apache 웹 서버 데몬 httpd를 모두 종료

pgrep 프로세스 이름 기반으로 검색하는 명령 PID값을 출력험
pgrep httpd httpd 프로세스의 PID를 출력

pkill 프로세스명 프로세스명을 사용ㅎㅐ서 프로세스 종료
pkill -9 -u user user사용자의 프로세스 강제종료

 

www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1497

 

리눅스포털

강좌 HOME > 강좌 > 강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다. 실무에서 자주 사용되는 쉘 스크립트 #1 (아파치 자동 재시작 스크립트)        실무에서 자주 사용되는 쉘 스

www.linux.co.kr

postfix 메일 전송 에이전트(MTA)
mailx 우체통

 

yum -y install [패키지명]

 

systemctl [enable|start] postfix.service
    - systemctl : 서비스 실행설정
    - enable : 부팅 시 자동으로 실행해줌
    - start : 서비스 시작

 

mail root root에게 메일보내는거임
종료하려면 . 하고 엔터치면 됨 (EOT:End Of Text)


21-04-01

 

mysql -uroot -p mysql로 접속하는 명령어
use mysql; 

create user 'gne'@'%' identified by '암호';   유저생성
create database gne_db;   디비생성
grant all privileges on gne_db.* to 'gne'@'%';   권한부여

select user, host from user;
show tables;
show databases;

mysql -ugne -p 개발서버에 접속 (mysql -u유저명 -p 엔터 후 패스워드)

use gne_db

 

stat public.xml 상태보기