<find>

find명령어로 다양하고 수많은 파일들을 쉽게 찾을 수 있다.

 



[문법]

find / -name [파일명] -type [d | f] [기타옵션]

 



<실습>

1. / 디렉토리를 시작으로 host로 시작하는 모든 file을 찾아서 출력







2. /etc 디렉토리를 시작점으로 2MB이상되는 fime을 찾아서 화면에 출력


 





3. / 디렉토리를 시작점으로 setuid2000file을 찾아서 출력






 

4. /export/home 디렉토리를 시작점으로 최근 7일 동안 수정된 file을 찾아 출력






 

5. / 디렉토리를 시작점으로 inode number1234file을 찾아 출력





LIST

'OS > Solaris' 카테고리의 다른 글

Solaris - Boot PROM, EEPROM  (0) 2016.05.03
Solaris - Root password 분실시 해결방법  (0) 2016.05.02
Solaris - crontab  (0) 2016.05.01
Solaris - Directory 구조와 File system  (0) 2016.04.30
Solaris - HDD 추가와 파티션 나누기  (0) 2016.04.29

<crontab>

지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되며 각 사용자 별로 /var/spool/cron/crontabs directroy에 사용자 ID와 같은 이름의 crontab file을 만들어 cron job을 지정 할 수 있다.

crontab 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon 형태로 수행되거나 sol10에서는 cron이라는 service명으로 동작된다.

주로 backup을 수행 할 때 많이 사용된다.

 

crontab -e : 파일을 편집할 때 사용

crontab -l : crontab 파일의 내용을 화면에 출력할 때 사용

crontab -r : 파일을 삭제할 때 사용

 

Minutes = 0~59

Hours = 0~23

Date = 1~31

Month = 1~12

Day-of-Week = 0:, 1:, 2=... 6:

 

ex) 30  1  *  2,4,6,8  3-5  cat/etc/passwd  >>  /export/home/kyg/test.txt

풀이 : 2, 4, 6, 8월달 수,,금 요일 130분마다 /etc/passwd 의 정보를 /export/home/kyg/test.txt에 저장해라.

 


<실습 1>

매주 화요일 새벽 120분에 접속한 사용자 목록 파일을 /export/home/kyg/who.log파일로 저장하시오.

1. crontab -e 를 사용하여 편집




2. 현재 필자의 시스템 시간


 



3. 빠른 실습을 위해 crontab이 실행되기 1분전으로 시간 변경


 



4. /export/home/kyg에 다음과 같은 사용자 접속 로그파일이 생성되었다.


 

 

<실습 2>


매주 월요일 밤 11시에 /etc/ 밑에 최근 5일동안 변경된 파일을 찾아서 /export/home/kyg/etc.log 파일로 저장하라.

 


1 .crontab -e 를 사용하여 수정해준다.





2. 지금 현재 날짜와 빠른 실습을 위해 시간 변경





3. 생성된 것을 확인할 수 있다.



LIST

'OS > Solaris' 카테고리의 다른 글

Solaris - Root password 분실시 해결방법  (0) 2016.05.02
Solaris - find  (0) 2016.05.01
Solaris - Directory 구조와 File system  (0) 2016.04.30
Solaris - HDD 추가와 파티션 나누기  (0) 2016.04.29
Solaris - setuid, setgid, sticky bit  (0) 2016.04.29

<Directory 구조>


1. /dev 구조

/dev/dsk : 마운트 관련 디렉토리. 가공된 디스크. 그래서 mount할때는 /dev/dsk를 사용한다.

/dev/rdsk : 가공되지 않는 disk이다. newfs로 파일시스템을 생성할 때 /dev/rdsk를 사용한다.

 


2. /etc 구조

/etc/cron.d : cron 유틸관련 정보

/etc/default : 다양한 프로그램들의 기본 정보

/etc/init.d : 시작과 종료 서비스의 스크립트 파일들

/etc/nfs : NFS server 패키지 구성 정보

/etc/rc#.d : 삽입하거나 삭제할 때 특정 run level에 관한 스크립트 파일들

/etc/skel : 새로 생성되는 사용자들의 기본 쉘 초기 파일들이 있음.

 


3. /usr 구조

/usr/bin : 표준 시스템 명령어

/usr/sbin : /usr/bin이 기본사용자 용 명령어라면 /usr/sbinroot(관리자용)

 


4.  /var 구조

/var/sadm : FSTP(File System Type Package)파일들이 있다. 패키지 관련 디렉토리



LIST

'OS > Solaris' 카테고리의 다른 글

Solaris - find  (0) 2016.05.01
Solaris - crontab  (0) 2016.05.01
Solaris - HDD 추가와 파티션 나누기  (0) 2016.04.29
Solaris - setuid, setgid, sticky bit  (0) 2016.04.29
Solaris - 시스템 기본 환경설정 .profile 파일, .sh파일  (0) 2016.04.23

<HDD 추가와 파티션 나누기>


실제 시스템이면 하드디스크를 메인보드에 꽂으면 된다. 하지만 필자는 VMware를 사용하고 있기 때문에 소프트웨어적인 방법으로 추가하겠다.

 

2GB짜리 하드 디스크를 추가해보자.



1. Edit virtual machine settings 클릭





 

2. Add누른후, hard disk 클릭





 

3. next 클릭


 



4. Next 클릭




 

5. 2GB로 변경후 next 클릭


 



6. OK클릭. HDD가 추가된것을 확인할 수 있다.




 


7. devfsadm -v 추가한 하드디스크 확인





8. format 명령어로 하드디스크 파티션 시작, 추가한 하드는 1번이다. 0번은 기존에 있던 하드




 

9. p를 눌러 partition을 시작하려고 하는데 오류가 뜬다. 처음 파티션을 시작할 때는 fdisk를 입력해줘야 한다.




 


10. fdisk를 입력 후, y





 

11. p를 눌러 파티션을 시작





 

12. p를 한 번더 누르면 print인데 파티션 정보를 출력을 해준다




 

13. 0번 파티션을 나눠보자.


0번 파티션에 100MB할당.

 

리눅스는 /dev/sda0 sda1이런식으로 하드디스크 이름과 파티션이 증가한다.

솔라리스에서는 Controller Target Disk Slicec0t0d0s0 이런식으로 파티션이 나눠진다.

t가 하드디스크를 의미하고 s가 파티션을 의미한다.

하드디스크가 다르면 t가 증가하고 파티션이 다르면 s가 증가한다.

지금 나누는 하드디스크의 파티션은 c0t1d0s0이다.

 



14. label -> 'y'로 설정 저장





 

15. q를 눌러 빠져나온다.





 

16. newfs 명령어로 file system을 생성한다. newfs를 할 때는 rdsk로 해야 한다.





 

17. mount한다.




LIST

<setuid>

setuid 권한을 가진 file을 일반 사용자가 실행하게 되면 그 순간 잠시 root권한을 빌려오는 것이다. 프로그램 실행 시 process가 가지는 권한은 program을 실행한 사용자의 권한이 아닌 program 소유주의 권한을 가지는 것을 setuid이다.

 

권한이 없는 파일을 실행하거나 열었을때 나타나는 에러이다.



 

다음과 같이 setuid를 설정해준 후에 실행해보자.



파일에 setuid권한이 있으나 실행 권한이 없을 경우는 소문자 s가 아니라 대문자 S이다.

 

잘 나오고 있다.



 

<setgid>

process가 명령어를 실행한 소유자가 속한 기본 그룹의 권한을 가지지 않고 명령어의 그룹 소유주 권한을 가지게 된다. 이것은 setuid개념이 그룹으로 된 것이기 때문에 개념자체는 똑같아서 설명을 안하겠다.

 

<sticky bit>

공용 디렉토리를 사용할 때 sticky bit를 설정하여 사용한다. sticky bit가 설정되어 있는 directory 안의 내용은 해당 file의 소유주나 root만이 변경이 가능하여 공용 디렉토리라도 권한에 제약을 두어 다른 사용자들의 파일을 보호하기 위한 목적으로 만든것이다.

window에서 공유폴더를 생각하면된다. 공유폴더 안에 있는 파일들의 변경을 제한을 두기 위해 사용하는 것이다.

 

setuid동작 권한 과정



LIST

<while>

문법)

while [ 조건식 ]

do

   반복 수행할 내용

done

exit 0

 

기존 C언어의 while문과 비교했을때 확연한 차이가 있다.

while문의 조건식 안에는 1또는 :이 오면 항상 참이 된다.

그 후, 반복할 내용을 do~done사이에 넣어주면 된다.

간단한 실습을 통해 while문을 알아보자.

 

 

<실습 - 1>

while문을 이용해 1~10까지의 합을 구하는 프로그램을 만들어보자.




<실습 - 2>

이번에는 if문과 while문을 응용하여 IDPassword를 물어보는 프로그램을 짜보자.



테스트!


LIST

'OS > Shell Script' 카테고리의 다른 글

Shell Script - case~esac문  (0) 2016.04.27
Shell Script - for문  (0) 2016.04.27
Shell Script - if문, if~else문  (0) 2016.04.26
Shell Script - 변수와 산술계산  (0) 2016.04.25
Shell Script - 기본 작성  (0) 2016.04.25

<case~esac>

if문 같은 경우에는 참 혹은 거짓으로 사용할 때 유용하다. 여러가지 경우의 수를 나타내고 싶다면 case~esac문을 이용하면 편리하다


문법)

case 파리미터조건 in

경우의 수1)

   파라미터조건=경우의 수1 경우 수행

경우의 수2)

   파라미터조건=경우의 수경우 수행

경우의 수n)

   파라미터조건=경우의 수경우 수행

esac

exit 0


<실습>



LIST

'OS > Shell Script' 카테고리의 다른 글

Shell Script - while문  (0) 2016.04.28
Shell Script - for문  (0) 2016.04.27
Shell Script - if문, if~else문  (0) 2016.04.26
Shell Script - 변수와 산술계산  (0) 2016.04.25
Shell Script - 기본 작성  (0) 2016.04.25

<for>

문법)

for 변수 in 1 3...

do

   반복할 문장

done

 

C언어에서 다루는 for문이랑 완전 다르게 생겼다...

실습을 통해 알아보자


<실습 - 1>



첫번째 반복문에서는 변수 i에 첫번째 파라미터 값 10을 넣고 계산한다.

두번째 반복문에서는 변수 i에 두번째 파라미터 값 20을 넣고 계산...

마지막 반복문에서는 변수 i50을 넣고 계산한다.

 

 

<실습 - 2>

여기있는 test*.sh를 가지고 실습을 진행하겠다.




ls *.sh의 결과 값으로 총 6개의 test*.sh가 나올것이다.

파라미터 변수값을 하나씩 받아 filename에 대입한 후, 그 값을 가지고 for문을 수행한다.






LIST

'OS > Shell Script' 카테고리의 다른 글

Shell Script - while문  (0) 2016.04.28
Shell Script - case~esac문  (0) 2016.04.27
Shell Script - if문, if~else문  (0) 2016.04.26
Shell Script - 변수와 산술계산  (0) 2016.04.25
Shell Script - 기본 작성  (0) 2016.04.25

문법)

if [ 조건 ]

then

   참일 경우 실행되는 부분

fi

참고로 if [조건 ]에서 조건 사이에 띄워쓰기롤 꼭 해줘야한다.

 


<실습>



<if~else>

문법)

if [ 조건 ]

then

   참일 경우 실행되는 부분

else

   거짓인 경우 실행되는 부분

fi

 

<실습>




<조건문 산술 비교 연산자>

조건문에 들어가는 비교 연산자에 대해서 알아보자.

C언어에서는 조건문에 들어가는 비교연산자는 직감적으로 기호를 보면 알 수있었다.

예를 들어 a>b 이면 ab보다 크면 참인것이다.

하지만 리눅스 shell script에서는 직관적으로 알 수없다...





<실습>

비교연산자 실습을 해보자.




<조건문 파일 비교 연산자>

조건문에 산술뿐만 아니라 파일에 대하 비교연산자도 있다.




<실습>

/home/ban에 어떤 파일들이 있는지 살펴보자.



test4.sh을 이용해 실습한다.




test.sh파일이 존재하고 일반 파일일 경우 참으로 출력




test.sh파일이 존재하지 않다는 것은 파일이 없다는 의미(일반 파일이 안된다는 의미)이기 때문에 거짓으로 출력



LIST

'OS > Shell Script' 카테고리의 다른 글

Shell Script - while문  (0) 2016.04.28
Shell Script - case~esac문  (0) 2016.04.27
Shell Script - for문  (0) 2016.04.27
Shell Script - 변수와 산술계산  (0) 2016.04.25
Shell Script - 기본 작성  (0) 2016.04.25

<변수>

1. 쉘에서는 C언어와는 다르게 변수를 사용하기 전에 미리 선언하지 않아도 된다. 변수에 첫 값이 할당되면서 자동으로 생성되기 때문이다.

2. 모든 변수는 문자열로 취급된다. 숫자, 문자 등 모든 값을 넣어줘도 모두 문자열로 취급되기 때문에 주의해야 한다. (특히 숫자가 많이 햇갈림...)

3. 변수 이름은 대소문자를 구분해야한다.

4. 변수를 대입할 때 '=' 좌우에 공백이 있으면 에러난다.

 

<실습>




처음부터 살펴보자.

1. 공백이 있으면 안된다고 했다. test = good에 공백이 있기 때문에 에러난다.

2. 두번째는 저장이 잘 되어서 출력이 이상없이 되었다.

3. 공백문자가 있을때는 " "로 묶어줘야한다. 묶어주지 않아서 에러났다.

4. 공백문자가 있을때 " "로 묶었더니 잘 출력된다.

5. 숫자는 문자열로 저장된다.

 

'$'문자는 환경변수를 출력할 때 사용하는 문자인데, '$'문자도 출력하고 싶을때는 어떻게 할까?

1. ' '작은 따옴표로 묶어준다.

2. '$'문자 앞에 '\'를 붙인다.

 

<실습>



2번째와 3번째행을 보면 $test를 그대로 출력하고 있다. 위에 언급한 룰을 적용시켜 출력해보았다.

 


<산술계산>

숫자도 문자열로 취급되기 때문에 산술연산을 어떻게 해야할까 고민이 된다.

이럴때 사용하는 명령어는 expr이다.

그리고 `(역따옴표)도 같이 사용해주어야 한다.

 

<실습>




첫번째 행은 단순히 문자열로 출력하기 때문에 붙여서 쓴다.

두번째 행은 숫자로 출력하기 위해 모두 각 단어 마다 띄어쓰기를 해준다.

세번째 행은 괄호를 표현하기 위해 \(역슬래쉬)를 사용하며 연산자중에 *를 사용할때도 (특별한 경우임) \(역슬래쉬)를 해준다.

 




LIST

'OS > Shell Script' 카테고리의 다른 글

Shell Script - while문  (0) 2016.04.28
Shell Script - case~esac문  (0) 2016.04.27
Shell Script - for문  (0) 2016.04.27
Shell Script - if문, if~else문  (0) 2016.04.26
Shell Script - 기본 작성  (0) 2016.04.25

+ Recent posts