출처 : http://nacarat.tistory.com bash 쉘스크립트로 어떤 옵션 즉 스크립트의 동작을 변경하기 위한 플래그를 사용할 수 있도록 하고 싶다고 하자. 이러한 경우 ${#} 을 사용해 주어진 인수의 갯수를 얻거나 ${1:0:1} 을 사용해 최초 인수의 최초 문자가 「-」인지를 판정 하는 방법으로 직접 자신이 넘길수도 있지만, 자신이 넘기는 경우에는 주어진 옵션이 무엇인지, 인수를 요구하고 있는지 어떤지를 확인하기 위해 if/then 또는 case 등을 사용한 코드를 더할 필요가 있다. 그런데 그 후에 인수를 지정할 필요가 있는 옵션에 대해서 필요한 인수를 사용자가 쓰지 않았을 경우 루틴은 어떻게 될까? 혹은 「-ab」 와 같이 사용자가 2개의 옵션을 함께 지정해서 스크립트를 호출했을 경우에는? 그러한 경우에도 인수를 제대로 넘길수 있을까? 스크립트에 옵션이 필요한 경우는 자주 있는 일이므로 쉘스크립트의 옵션을 넘겨야 하는 경우가 자주 생긴다. 옵션을 넘기는 표준적인 방법은 없는 것일까? 옵션을 넘기는 표준적인 방법은 bash 명령어 「getopts」 를 사용하는 것이다. 아래에 getopts의 메뉴얼 페이지에 실려 있는 예를 약간 나타내
qmail에서 아래와 같은 로그를 보았을때 퍼미션과 소유권을 확인하면 된다. Nov 21 08:24:51 mail3 pop3d: Connection, ip=[xxx.xxx.xxx.xxx] Nov 21 08:24:51 mail3 pop3d: chdir "/home/vpopmail/domains/domain.co.kr/lhyoung": Permission denied Nov 21 08:26:02 mail3 qmail: 1227223562.708787 warning: unable to stat mess/19/1338481 Nov 21 08:26:53 mail3 pop3d: Connection, ip=[xxx.xxx.xxx.xxx] Nov 21 08:26:53 mail3 pop3d: chdir "/home/vpopmail/domains/domain.co.kr/lhyoung": Permission denied Nov 21 08:27:07 mail3 pop3d: Connection, ip=[xxx.xxx.xxx.xxx]
센드메일 발송 테스트(sendmail) root@web:/usr/sbin# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 aaa.com ESMTP Sendmail 8.13.1/8.13.1; Tue, 8 Mar 2011 15:41:47 +0900 mail from:aaa@aaa.com 250 2.1.0 aaa@aaa.com... Sender ok rcpt to:aaa@aaa.com 250 2.1.5 aaa@aaa.com... Recipient ok data 354 go ahead Return-Path: test@mail.com From: TEST <test@mail.com> To:<test@mail.com> Subject: 제목 Content-Type: text/html; chareset=euc-kr Content-Transfer-Encoding: base64 354 Enter mail, end with "." on a line by itself 테스트메일발송 . 250 2.0
ps명령어는 현재 실행중인 프로세스들을 사용자와 PID에 의해서 보여준다. 옵션 -a : 다른 사용자의 프로세스 현황 출력. -u : 실행 유져와 실행 시간을 표시한다. -x : 터미널 제어 없이 프로세서 현황을 표시. [root@web ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2737 0.0 1.0 12744 11044 ? Ss 10:43 0:00 /usr/sbin/httpd 위 예시 처럼 apache의 소스 설치냐 rpm 설치냐의 설치법을 파악하기위해 ps aux 실행 후의 결과값 중 COMMAND 라인의 경로를 보고 파악한다. /usr/sbin/httpd : RPM /opt/webapps/apache2 : 소스 /opt/webapps/apache : 소스
<test123 웹 서버의 인증서 만들기> 1. 개인키 생성 openssl genrsa -des3 -out test123.key 2048→ 패스워드 지정함생성키 확인openssl genrsa rsa -noout -text -in test123.key 2. 개인키를 가지고 인증요청서 생성openssl req -new -key test123.key -out test123.csr생성키 확인openssl req -noout -text -in test123.csr * 인증된 CA로부터 공개 키 서명을 받는다. CSR을 인증 기관에 보냄으로써 서명을 받을 수 있다. CSR ( Certificate Signing Request ) : SSL 서버를 운영하는 회사의 정보를 암호화하여 인증기관으로 보내 인증서를 발급받게 하는 일종의 신청서 * 인증 기관에서 인증서를 발급 해준다. ( Root ca.crt , Server ca.crt, 도메인.crt 3개의 파일을 발급해준다) <발급이 완료된 인증서로 인증서 변경 방법> 1. /opt/webapps/apache2/ssl-key/ 에 인증서 복사 ( ca.crt파일을 열어보고 판단해야한다) 2. 키에 패스워
httpd -f 아파치설정 파일을 지정하여 실행 (하나의 아파치에 두개 이상의 설정파일을 용도별로 사용할때 유용) httpd -d 홈디렉토리를 지정하여 아파치 실행 (ServerRoot) httpd -v 버젼 확인 httpd -V 컴파일하여 설치한 설정내용 확인 httpd -l 설치되어 사용가능한 모듈 확인 httpd -L 설정지시자 확인 httpd -S 가상호스트 확인 httpd -t 문법 검사
다른 계정 사용자로 로그인 su [옵션] 계정명 -c : 계정변신 없이 명령만 실행 ex) su -c 'cat /etc/shadow' - root -s : 지정된 쉘로 로그인 - : 환경변수 적용해 로그인 ◎ 일반계정에서 root로 로그인 (환경변수 미적용) [root@push06 kbs]# id uid=0(root)gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) [root@push06 kbs]# [root@push06 kbs]# env HOSTNAME=push06 TERM=linux SHELL=/bin/bash HISTSIZE=1000 USER=kbs PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/kbs/bin MAIL=/var/spool/mail/kbs PWD=/home/kbs
서버에 문제가 생겨 일반 사용자들의 접속을 못하도록 조치할때 유용 일반사용자 서버접속 금지하기 #/etc/nologin 파일을 생성한다. 파일이 생성된 이후부터는 일반사용자는 서버에 접속하질 못한다. 단순히 파일이 있는것 자체만으로 접속을 못하게된다. nologin 파일에는 서버점검중임을 적어두면 일반 사용자가 접속할때 nologin 파일안의 내용이 뿌려지게 된다. 단, root만은 접속할 수 있다. 하지만 일반 사용자로 로긴한 후 root로 접속한다면 일반사용자로 접속을 하지 못하기때문에 서버에 접속할 수 없는 문제가 생길 수 있다. root로만 접속이 가능함을 명심하기바란다.
EXT3-fs error (device sda2) ext3_journal_start_sb : Detected aborted journal EXT3-fs error (device sda2) ext3_journal_start_sb : Detected aborted journal EXT3-fs error (device sda2) ext3_journal_start_sb : Detected aborted journal 에러가 발생하면 읽기모드로 변경되면서 더이상 업데이트가 안된다. 해결방법 1. 해당장치를 unmount 2. debugfs -w -R "feature ^has_journal,^needs_recovery" /dev/장치명 파티션을 ext2모드로 바꾸어 줍니다. 3. fsck -y /dev/장치명 점검 4. tune2fs -j /dev/장치명 저널링을 활성화 5. mount
디렉토리 압축 zip -rF "저장파일명.zip" " 디렉토리 및 파일명" -r : 서브디렉토리까지 압축 -F : 한글파일을 포함하여 압축 압축해제 unzip 파일이름.zip
php 컴파일시 아래와 같은 에러 대처하기 -lcrypt -lnsl -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -o libphp5.la/usr/bin/ld: cannot find -lltdlcollect2: ld returned 1 exit statusmake: *** [libphp5.la] Error 1 문제ltdl 라이브러리를 찾을 수 없다는 에러임 아래 rpm을 설치해준다.lltdl-devellibtool-ltdl-devel
Linux에서 error: "package name" specifies multiple packages 발생시 rpm 삭제방법 rpm이 중복되어 있는 경우 rpm -e 로는 삭제되지 않는다. 다음과 같은 메세지가 출력된다. [root@localhost]# rpm -e gcc-gnat-4.1.2-48.el5.i386 error: "gcc-gnat-4.1.2-48.el5" specifies multiple packages 중복되는 rpm 삭제하기 rpm --erase --allmatches gcc-gnat-4.1.2