이론



mysql에서 화면지우기 : system clear;


[root path변경]

1.su - ->루트로 접속

2.mysql ->mysql로 접속

3.set password for 'root'@'localhost'=PASSWORD('12'); ->root의 비번을 12로 설정

4.exit ->root종료


[사용할 db생성]

mysql -u root -p12; 

create database xedb; 

create user 'mykosta'@'localhost' identified by '12'; 

grant all privileges on *.* to 'mykosta'@'localhost'; -

create database mykostadb; 

grant all privileges on mykostadb.* to 'mykosta'@'localhost'; 


[로그인되었으면, 해당 사용자로 접속]

mysql -u mykosta -p mykostadb ->mykosta라는 유저에서, mykostadb라는 database로 접속


[테이블 생성]

create table member

(

    id bigint(20) unsigned not null auto_increment,

    name varchar(40) not null,

    phone_num varchar(30) not null,

    created datetime,

    user_ip varchar(32) not null,

    primary key(id)

)


[권한 초기화]

flush privileges; ->MySQL에 변경사항을 적용하기 위해서 사용하는 명령어




[PHP와 MySQLi 연결하기]


1. cd var/www로 디렉 이동 -> root@kosta:/var/www# chown -R kosta.kosta html


2. cd html로 이동 -> root@kosta:/var/www/html# vi conn.php 작성


3. root@kosta:/var/www/html# vi testConn.php 작성


*** ==(equal) 와 ===(identical)의 차이 ***

=== 는 좀더 엄격한 '같음'을 의미한다 ::



[쉘 스크립트]


1.환경변수 확인

env


2.홈디렉터리 확인

kosta@kosta:~$ echo $HOME


3.chmod 755 name.sh로 권한 설정 해주고

sh name.sh 또는 ./name.sh로 실행


프롬프트

PS1 – Primary Prompt String(default value : \s-\v$)

PS2 – Secondary Prompt String(default value : >)

PS3 – select command를 위한 prompt

PS4 – shell script 를 디버깅 모드에서 실행시 사용되는 prompt



실습


conn.php

1
2
3
4
5
6
7
<?php
// conn.php
$servername = "localhost";
$username = "mykosta";
$password = "12";
$dbname = "mykostadb";
?>

testConn.php

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// testConn.php
 include "conn.php";
 
// Create connection
$conn = new mysqli($servername, $username, $password);
 
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

member_add.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
include "conn.php";
$phoneNum = $_POST['phonenum'];
$name = $_POST['name'];
 
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$user_ip=$_SERVER['REMOTE_ADDR'];
 
$sql = "INSERT INTO member (name,phone_num, created, user_ip)
VALUES ('$name','$phoneNum',now(),'$user_ip')";
if ($conn->query($sql) === TRUE) {
    echo "NEW record created successfully";
} else{
    echo "Error: " .$sql . "<br>" . $conn->error;
}
$conn->close();
?>

var1.sh

1
2
3
4
5
6
7
8
9
10
11
#!bin/sh
myvar="hi KOSTA"
echo $myvar
echo "$myvar"
#문자열로 출력
echo '$myvar'
echo \$myvar
echo 값 입력:
read myvar
echo '$myvar' = $myvar
exit 0

paravar.sh

1
2
3
4
5
#!bin/sh
echo "실행파일 이름은 <$0>이다"
echo "첫번째 파라미터는 <$1>이고, 두번째 파라미터는 <$2>다"
echo "전체 파라미터는 <$*>다"
exit 0

if1.sh

1
2
3
4
5
6
#!/bin/sh
if test "woo" = "woo"
    then
        echo "참입니다"
    fi
    exit 0

if2.sh

1
2
3
4
5
6
7
8
#!/bin/sh
if test "woo" != "woo"
then
    echo "참입니다"
else
    echo "거짓입니다"
fi
exit 0

if3.sh

1
2
3
4
5
6
7
8
#!/bin/sh
if [ 100 -eq 200 ]
then
    echo "100과 200은 같다"
else
    echo "100과 200은 다르다"
fi
exit 0

if4.sh

1
2
3
4
5
6
7
8
9
#!/bin/sh
fname=/lib/systemd/system/cron.service
if [ -f $fname ]
then
    head -5 $fname
else
    echo "cron 서버가 설치되지 않았습니다"
fi
exit 0

forin1.sh

1
2
3
4
5
6
7
8
#!/bin/sh
hap=0
for i in $(seq 1 10)
do
    hap=`expr $hap + $i`
done
echo "1부터 10까지의 합: "$hap
exit 0

forin2.sh

1
2
3
4
5
6
7
#!/bin/sh
for fname in $(ls *.sh)
do
    echo "-------$fname------"
    head -3 $fname
done
exit 0

case1.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
case "$1" in
start)
    echo "시작~~";;
stop)
    echo "중지~~";;
restart)
    echo "다시시작~~";;
*)
    echo "뭔지모름";;
esac
exit 0

case2.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
echo "리눅스가 재미있나요? (yes / no)"
read answer
case $answer in
    yes | y | Y | yes | YES)
        echo "다행입니다."
        echo "더욱 열심히 하세요 ^^";;
    [nN]*)
        echo "안타깝네요. ㅠㅠ";;
    *)
        echo "yes 아니면 no만 입력했어야죠"
        exit 1;;
esac
exit 0

while.sh

1
2
3
4
5
6
7
#!/bin/sh
echo "결과가 나오는 명령어 입력: cat,ls"
read comm
$comm | while read fn
do
    echo $fn
done

while1.sh

1
2
3
4
5
6
#!/bin/sh
while [ 1 ]
do
    echo "우분투 16.04 LTS"
done
exit 0

while2.sh

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
hap=0
i=1
while [ $i -le 10 ]
do
    hap=`expr $hap + $i`
    i=`expr $i + 1`
done
echo "1부터 10까지의 합 : "$hap
exit 0

while3.sh

1
2
3
4
5
6
7
8
9
10
#!/bin/sh
echo "비밀번호를 입력하세요."
read mypass
while [ $mypass != "1234" ]
do
    echo "틀렸음. 다시 입력하세요."
    read mypass
done
echo "통과~~"
exit 0

whileHap.sh

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
hap=0
i=1
while [ $i -le 10 ]
do
    let hap=$hap+$i
    let i++
done
echo "1부터 10까지의 합"$hap
exit 0

numcalc.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
num1=100
num2=$num1+200
echo $num2
num3=`expr $num1 + 200`
echo $num3
num4=`expr \( $num1 + 200 \) / 10 \* 2`
echo $num4
echo 수1 입력:
read num5
echo 수2 입력:
read num6
num7=`expr \( $num5 + $num6 \) \* 2`
echo $num7
exit 0

examGugu.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
echo "단을 입력하세요"
read dan
while [ $dan -lt 10 ]
do
echo " $dan 단"
echo "======="
num=1
while [ $num -lt 10 ]
do
answer=`expr $dan \* $num`
if [ $answer -lt 10 ]; then
    answer=" $answer"
fi
echo "${dan}x${num}=${answer}"
num=`expr $num + 1`
done
dan=`expr $dan + 1`
echo ""
done
exit 0

select.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
PS3="Choose (1-5):"
echo "Choose from the list below."
select name in red green blue yellow megenta
do
    echo $PS3
    case $name  in
        red)
            echo "사과선택";;
        green)
            echo "청포도선택";;
        blue)
            echo "파랭이";;
        yellow)
            echo "병아리";;
        megenta)
            echo "바다";;
        esac
    break
done
echo "You choose $name."
exit 0


'학원수업 > 리눅스' 카테고리의 다른 글

학원 39일차 복습(5/10)  (0) 2018.05.10
학원 38일차 복습(5/9)  (0) 2018.05.09
학원 37일차 복습(5/8)  (0) 2018.05.08

이론



리눅스 기본명령어 ,시스템 명령어(사용자,그룹)

클라이언트에 vsftpd 생성

sudo apt-get -y install vsftpd


sudo vi /etc/vsftpd.conf 들어가서

:ser number로 행번호 띄운후,


31행 주석제거 (write_enable=YES)


122,123,125행 주석 제거(chroot_locar_user=YES, chroot_list_enable=YES, chroot_list_file=/etc/vsftpd.chroot_list)

sudo vi /etc/vsftpd.chroot_list 에서 내 아이디 추가해준후 :wq(아이디 한줄만 넣어주면 됨)

sudo systemctl restart vsftpd 


editplus사용

FTP->FTP설정

코드입력후 FTP->원격저장 

표시-> 원하는 경로 저장


[zip(압축해라) -er(하위폴더까지전부) work.zip(work라는 이름으로) testdir/(testdir라는 폴더를)]


[tar : 여러파일을 한 파일로 묶는다(archive). 확장자는 .tar]

▶사용법

$ tar -cvzf [압축된 파일 이름] [압축할 파일이나 폴더명]


▶해당 경로의 모든 파일을 xxx.tar.gz로 압축

$ tar -cvzf xxx.tar.gz *


▶권한(permission)이 없는 파일 패스하며, 해당 경로의 모든 파일을 xxx.tar.gz로 압축

$ tar -cvzf xxx.tar.gz * --ignore-failed-read


▶옵션값

x : 묶음을 해제

c : 파일을 묶음

v : 묶음/해제 과정을 화면에 표시

z : gunzip을 사용

f : 파일 이름을 지정

p : 권한(permission)을 원본과 동일하게 유지


unzip: 압축풀기


***우리가 알고있어야 하는 사용자추가 정보들***

사용자추가

/etc/passwd ->사용자정보

/etc/group ->groupID,추가그룹

/etc/shadow ->비밀번호


***중요

group -> 소유권, 소유그룹

사용 -> 허가권 


chmod [옵션][퍼미션][파일]


하드링크

생성 명령어 : ln 링크대상파일이름 링크파일이름

원본파일 자체를 복사. 원본파일 삭제되어도 에러 안남.(잘 안쓰이지만, 백업데이터 저장할때와 같은 경우에 사용)

touch aa.txt

ln aa.txt aainput -> 하드링크!

ls > aainput

cat aa.txt


심볼릭링크

생성명령어 : ln -s 링크대상파일이름 링크파일이름

하나의 링크가 바로가기 키. 원본파일 삭제되면 에러.(노드가 하나)

ln -s /home/kosta/dir/linux.sh mylinux


[웹서버 설치와 운영]


한줄씩 입력하면서 설치하기...

1.sudo apt-get update

2.sudo apt-get install apache2

3.sudo apt-get install mysql-server mysql-client

4.sudo apt-get install php libapache2-mod-php php-xml php-gd php-mysql

<<아파치 리스타트>>

6.sudo /etc/init.d/apache2 restart

7.sudo /etc/init.d/mysql restart

8.sudo apt-get install phpmyadmin **나 설치 잘못됬을수도있음(phpmyadmin이 아이디!)

9.언어지원 설정  sudo apt-get install php-mbstring php-gettext

10. ls /etc/phpmyadmin/apache.conf

11.root@kosta:/home/kosta# cd /etc/apache2

root@kosta:/etc/apache2# vi apache2.conf 에 들어가서

맨 아랫줄에 Include /etc/phpmyadmin/apache.conf 추가

12.내 inet ip번호/phpmyadmin 으로 접속


실습



LinuxShell.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
 
public class LinuxShell {
    private static LinuxShell shell;
    public static synchronized LinuxShell getShell() {
        if(shell==null) shell = new LinuxShell();
        return shell;
    }
    public void exec(String cmd) throws IOException {
        //Linux Shell을 실행하는 Process 클래스
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec(cmd);
        BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String res = "";
        while((res=br.readLine())!=null) {
            System.out.println(res);
        }
    }
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        System.out.println("명령어 입력:");
        String cmds = sc.nextLine();
        LinuxShell.getShell().exec(cmds);
    }
     
}

test.php

1
2
3
4
5
<?php
    echo "PHP 정보";
    echo "<br/>";
    phpinfo();
?>


'학원수업 > 리눅스' 카테고리의 다른 글

학원 40일차 복습(5/11)  (0) 2018.05.11
학원 38일차 복습(5/9)  (0) 2018.05.09
학원 37일차 복습(5/8)  (0) 2018.05.08

이론



우분투 데스크탑(클라이언트) 설치



자바환경 준비(한줄씩 설치)

sudo apt-get update

sudo apt-get install default-jre

sudo apt-get install default-jdk

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

sudo update-alternatives --config java로 확인


sudo vi /etc/environment 친 후

JAVA_HOME="/usr/lib/jvm/java-8-oracle" 붙여넣기 :wq저장


source /etc/environment

echo $JAVA_HOME    (/usr/lib/jvm/java-8-oracle 뜨는거 확인...)


**vim에서 백스페이스, 방향키가 이상하면  sudo apt-get install vim로 vim 새롭게 인스톨 할것**



FTP서버 설치를 위한 .vsftpd 설치 

sudo apt-get -y install vsftpd


sudo vi /etc/vsftpd.conf 들어가서

:ser number로 행번호 띄운후,


31행 주석제거 (write_enable=YES)


122,123,125행 주석 제거(chroot_locar_user=YES, chroot_list_enable=YES, chroot_list_file=/etc/vsftpd.chroot_list)


sudo vi /etc/vsftpd.chroot_list 에서 내 아이디 추가해준후 :wq(아이디 한줄만 넣어주면 됨)

sudo systemctl restart vsftpd 


filezilla에서 클라이언트 다운  https://filezilla-project.org/download.php?type=client



자바FX 빌더 다운로드 http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-1x-archive-2199384.html 



넷빈즈->Tools->Options->Java->JavaFX 자동으로 경로 설정된것 확인

File->new Project->JavaFX의 JavaFX FXML Application으로 프로젝트 생성


filezilla에서 윈도우에 있던 jar을 리눅스의 source폴더에 드래그 앤 드롭!


자바에서 런된것 종료하는 단축키 ctrl + c

'학원수업 > 리눅스' 카테고리의 다른 글

학원 40일차 복습(5/11)  (0) 2018.05.11
학원 39일차 복습(5/10)  (0) 2018.05.10
학원 37일차 복습(5/8)  (0) 2018.05.08

이론



기본프로그램 쉘프로그램


whoami  : 서버에 접속한 클라이언트 확인, 사용자 이름, 그룹 정보, SID[1], 사용권한, 로그온ID 확인가능


- /etc/apt/sources.list : 의존성 및 충동성을 해결하기 위해 관련 정보를 기록하는 파일


apt --installed list | grep ssh


  | : 파이프,막아주는 의미

ps aux | grep ssh


ifconfig : ip정보확인 (Len카드 번호, loop back)


pwd: 현재 경로


ps  : 현재 실행 중인 프로세스에 대한 정보를 출력


ls

ls -l

ls -al

ls -ld

파일 리스트 보기


[bin : 명령어들을 모아놓은 디렉토리(심볼릭 링크~~)]


런레벨(Run level)이란, 시스템 관리의 용이함을 위하여 서비스의 실행을 단계별로 구분하여 적용하는 것을 말함.


ls -l /lib/systemd/system/runlevel?.target



> : 표준 출력 명령 > 파일 (명령의 표준 출력 결과를 파일로 출력)

>> : 표준 출력(추가) 명령 >> 파일 (명령의 표준 출력 결과를 기존 파일 내용 이후에 출력)

< : 표준 입력 명령 < 파일 (파일의 데이터를 읽어 명령의 표준입력으로 사용



PID : 프로세스 ID

16버젼부터 init -> systemd 로 바뀜(우분투만)


리눅스 커널 

모듈(init)


sudo : 루트의 권한을 빌려서 쓰는 명령어


su - : 루트

- : 사용자의 새로운 쉘을 사용



bash : 우분투의 기본 쉘

쉘: 명령어 해석기

$: 일반유저

#: 루트


UID 나 GID 500번 이상을 사용


셧다운하는 방법

sudo systemctl isolate poweroff.target


sudo shutdown now 


현재 런레벨을 확인하는 방법

runlevel or who -r


runlevel을 영구히 변경하기

sudo systemctl enable multi-user.target

sudo systemctl set-default multi-user.target



링크 탈때 TAB키, 자동완성


su - kosta  (new 의 개념)


su kosta (기존것 이어서)



-p 하위 디렉토리까지 모두 생성


ls -ld tmp (상대경로)

ls -ld /tmp (절대경로)


cat은 비교적 가벼운 파일을 읽거나 작성할 경우 자주 사용되는 명령어 입니다.

 > : 덮어쓰기 , >> : 이어쓰기 모드로 작성이 가능하며

 cat myfile.txt 읽을수 있다.


ctrl + D 작성완료


vi 파일명 

#여기서 글을 입력합니다. 모드 i

# test content

# 모든 입력후 esc :w (저장), :wq(저장후 종료)

# :wq! - 강제종료

hello~!

#x 한글자씩 삭제, dd는 한줄 삭제, yy한줄 복사,p는 붙여넣기

:-r 파일명

:new 파일명

:set number 줄번호



#JDK 설치

sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo update-alternatives --config java로 확인

sudo vi /etc/environment 친 후
JAVA_HOME="/usr/lib/jvm/java-8-oracle" 붙여넣기 :wq저장

source /etc/environment
echo $JAVA_HOME    (/usr/lib/jvm/java-8-oracle 뜨는거 확인...)



#javac -d <클래스파일생성위치> -sourcepath <관련소스파일위치> <소스파일위치>

#-sourcepath : 관련소스파일의 위치 지정

javac -d ./ -sourcepath ./ ./Ex1_Server.java



붙여넣기 = 마우스 오른쪽 클릭

ctrl + z 하면 리눅스 안돌아감 절대쓰지말것 



'학원수업 > 리눅스' 카테고리의 다른 글

학원 40일차 복습(5/11)  (0) 2018.05.11
학원 39일차 복습(5/10)  (0) 2018.05.10
학원 38일차 복습(5/9)  (0) 2018.05.09

+ Recent posts