[운영체제] vagrant 시작 전 정리
맨 처음 cmd 가서
“sudo yum update “ 를 입력해서 업데이트 해주자
man yum
sudo adduser user2
sudo passwd user2
파일명 앞에 .을 붙이는 건 파일 디렉토리를 말한다.
.을 붙이는 건 임의 적으로 .을 붙이고 일반적으로 밖으로 노출하기 위한게 아닌 경우 앞에 .이 붙는다.
touch로 test1.txt 파일을 만들자.
gedit /etc/hosts
touch test1.txt
cp test1.txt test2.txt
mkdir aaa
cp test1.txt aaa/test3.txt
cp test1.txt aaa
rm test2.txt
ln test1.txt test2.txt
ln -s test1.txt test3.txt
ls test
ls -F test
ls -d test
ls -i test
명령어는 익숙해 져야지 억지로 외우고 이러면 만들라 하면 못만든다.
노출빈도를 늘리는 수밖에 없다. 시스템 만들고 배포 해야되므로
심볼릭 링크는 골뱅이 붙는 듯
동일 객체를 가리킨다. 하드링크
echo는 앞에 $가 붙을 시 환경변수 보여준다.
싱글 콤마와 더블콤마가 다른데
echo ‘$PATH’ 면 싱글 콤마라 $PATH가 나오지만 echo “PATH” 면 더블 콤마라 환경 경로가 나온다.
echo "abcd`pwd`"
이건 역 싱글인데 그 명령에 따른 내용이 나오고 있다.
grep은 내용중에 뭔가 찾음.
grep에서 gnome 하면 gnome이라는 문자열을 특정 파일로 부터 찾음.
Bash Shell 환경 설정
지역변수 전역변수
윈도우에서 set하고 설정하면 지역변수 cmd 끄고 키면 사라짐 = 지역변수
운영체제 속성 들어가서 설정 = 전역변수(환경 변수) 물론 윈도우에서도 가능 set x 가 그것
cat test1.txt > test2.txt
var1=abcd;
echo $var1
이건 지역변수고
전역으로 설정할 때는 export 사용
echo $PATH
echo $
해제시엔 unset
Alias 는 별칭
명령을 명칭 줘서 다르게 실행도 가능하다.
덤으로 cp와 tab은 사용을 잘해야 한다. 왜냐하면 파일 이름이나 경로 이런거 복사할 때가 많을 텐데 그때 일일이 입력보다 복사해서 쓰는게 훨씬 안전하고 편하다.
환경설정 파일
etc/profile ect/bashre etc/profile.d/*sh
사용자 환경 설정 파일
내가 로그인 했을 떄 나만 사용하는 거
숫자를 이용한 파일 접근권한 변경
####프로세스 종료
시그널
kill = 저장한 시그널을 프로세스에게 보낸다.
포그라운드 ,백그라운드 프로세스와 작업 제어
dnf를 통한 설치
Centos8에서 처음 적용 yum과 비슷한 기능
- 패키지 의존성 자동으로 해결하여 설치, 업그레이드, 삭제 가능
파일 아카이브
아카이브 : 원래 보관소라는 뜻이나 리눅스에서는 파일을 묶어서 하나로 만든것의 의미.
tar 명령은 원래 여러 파일이나 디렉터리를 묶어서 마그네틱 테이프와 같은 이동식 저장소에 보관하기 위해 사용
ls aa
tar -cvf objl.tar aaa
tar -xvf objl.tar
리눅스의 확장자는 사용하기 위한 확장자.
압축부분은 tar정도만 알면 괜찮
그외 옵션 xvf cvf 이정도만 알면.
gz도 있다. 얘도 압축 사용.
useradd , groupadd
sudo adduser -g user1 user2 user1 권한으로 user2생성
su user2 // user2로 계정 변환.
exit 입력시 원래 계정으로 돌아옴.
UID , EUID
- UID : 잘 알고 있듯, 유닉스 계열의 운영체제는 UID ( 유저 식별자 ) 를 통해 유저를 식별한다.
- EUID : 이는 프로세스의 영향력(권한)을 표현하는 지표로 현재 프로세스가 갖는 권한을 의미한다.
운영체제 제어
자바에서 배치 스크립터 짠거마냥 리눅스에서의 쉘 스크립팅
쉘 스크립팅
조건문 제어문 반복문 등. 디테일 까지는 아니더라도 운영체제 단에서 어느정도는 알아야한다.
root 권한 사용 방법
- su 명령을 이용하여 root 계정으로 전환
쉘 스크립팅.
쉘 스크립트는 커널과 내가 상호 소통하는데 매개체적인 역할. 직접 커널을 조작할 수 없으므로 사용.
우리가 사용하는 쉘은 가장 최소의 운영체제 조작하기 위함.
- C언어와 비슷하게 프로그래밍 가능
- 별도로 컴파일 안하고 텍스트 형태로 바로 신행
- 리눅스의 많은 부분이 쉘로 이뤄짐
vim ex01.sh (gedit ex01.sh) 생성 안에 내용 작성:
#!/bin/sh
echo "me home" $HOME
./ex01.sh 는 권한 에러남
그래서 chmod o+x ex01.sh로 줘야한다.
chmod +x ex01.sh
./ex01.sh
#!bin/sh는 자체적으로 실행하기 위해
내가 처음 내린 명령이 #!/bin/sh이다.
왜 하필 sh? bash shell 하고 실행해야 되는데 만약 안 쓰면 동작 안함. 범용적으로 쓰기 위해
ex01.sh안에 exit 0 추가
./ex01.sh >result.txt 2>result2.txt // 중간에 정상적이면 왼쪽, 아니면 오른쪽
./ex01.sh >result.txt 1>result2.txt // 중간에 정상적이면 왼쪽, 아니면 오른쪽
./ex01.sh >result.txt 0>result2.txt // 0이면 정상이라는거(가운데)
exit 0이면 정상인데 그렇지 않으면 에러
ex03.sh
#!/bin/sh
var1="hello world"
echo $var1
echo "$var"
echo '$var1'
echo '\$var1'
echo input:
read var1
echo 'var1='va $var1
ex04.sh
#!/bin/sh/
num1=100
num2=10
num3=num1=num2
echo $num1
echo $num2
echo $num3
echo `expr \($num1+$num2`
괄호 집어넣을 땐 그냥 집어넣으면 안되고 역슬러쉬 집어넣어야 됨
ex05.sh
#!/bin/sh
echo"1=<$0>"
echo"2=<$1>"
echo"3=<$2>"
echo"all=<$*>"
sh ex05.sh aaa bbb ccc ddd 쉘에선 자기자신이 0번.
ex06.sh
echo "start..."
if[1] //트루면
if[] //폴스이면(안에 빈 상태)
then
echo "result:true"
fi
echo "end..."
(이것이 리눅스다 참조)
그리고 if then 쓰다가 중간 에러났는데
중첩 if 문을 지원 못하나 검색도 해보고 문법이 틀렸나 검색도 해 보았으나, 결론은 if[ $checkTmp = ‘y’ ] 여기가 문제였다.
if 문을 쓸 때는 아래처럼 if 다음에 꼭 한칸을 띄워줘야 한다. if [ $checkTmp = ‘y’ ]
위처럼 []를 if랑 딱 붙여 쓰면 에러나던가.
파일 관련
#!/bin/sh
file1 = $1
echo "$file1"
if [ -f $file1 ]
then
echo "file"
fi
if [-d $file1]
then
echo "directory"
fi
export
.bash_profile 조작
source .bash_profile echo $var1234
sudo dnf install java-1.8.0-* -y 로 설치
sudo dnf search jdk
sudo dnf -y install java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64
- sudo update-alternatives –config javac
- 이걸 쓰면 현 자바 사용 가능한 버전들이 나오고 쉽게 사용이 가능하다. 번호로 선택 가능.(자바 여러개 깔고
제거:
sudo dnf -y uninstall java-11-openjdk.x86_
sudo rpm -Uvh jdk-8u212-linux-x64.rpm
alternatives –config javac
sudo rpm -e jdk1.8-1.1.8.0_212-fcs.x86_64
java 오라클에서 자바8 설치
sudo rpm -Uvh jdk-8u212-linux-x64.rpm 써서 설치( 버전 아마도 8u311일꺼) 진행상황 보여주면서 설치해라
sudo alternatives –config javac
tar -xvzf jdk-8u212-linux-x64.tar.gz jdk1.8.0_212
방금 자바 푼 자바 1.8을 usr/java로 옮기겠다.
sudo mv jdk1.8.0_212/ /usr/java
export JAVA_HOME=/usr/java/jdk1.8 export PATH=$JAVA_HOME/bin:$PATH
source /etc/bash_profile
javac.
source /etc/bash_profile
env | grep PATH |
javac -version
텔넷 서버 구축
putty
브릿지 네트워크로 나 거쳐서 가리키는거고 공유기 입장에서 아랫 구성은 모르지만 할당하면
하나의 랜카드가 ip 2개로 할당 받음.
ip는 컴퓨터 구분하는 요소라고는 하지만 실제로 보면 완벽하진 않다.
진짜로 구분 제대로 하고 싶으면 물리계층(MAC Address)를 사용해야 한다.
Vagrant
도커와 더불어 2톱으로 많이 쓴다고 한다. (쿠버네티스는?) 아무튼 이걸 알아두자.
데이터 베이스도 윈도우에 깔긴 하지만 사실은 서버에 깔아야 되는거 일일이 서버 설정해두는 걸 좀 많이 쉽게 해주는 것 중 하나가 Vagrant이다.
sudo yum install -y java-1.8