유닉스 계열의 개행문자 0A
윈도우에서 편집된 소스가 유닉스에서 컴파일시 개행문자때문에 오류가 날수 있음..
이때는 개행문자를 변경 해줘야 함...
ultra에서 ctrl+h 후 0D0A --> 0A로 변경..
서버로 올릴때 ascii로 올리면 안됨...
vi로 편집시 dos모드로 열리는지 확인 해야 함..
########################################################################################
########################################################################################
########################################################################################
[TIP] Power Manager .. (즉 전원관리)
.. Solaris 2.6에서는 "powerd" daemon이 실행되어 일정 시간동안 작업을 하지 않으면 시스템이 자동 down되도록 지정할 수 있다. 이 Power Manager는 OS를 설치하는 과정에서 enable/disable 할수 있으며, OS를 설치 한 후에도 아래의 관련 화일들을 이용하여 구동할 수 있다.
1. Starting Script
powerd daemon은 시스템이 booting되는 과정에서 /etc/rc2.d/S85power 스크립트가 실행되면서 pmconfig 명령에 의해 구동된다.
Power Manager 기능을 사용하지 않으려면 /etc/rc2.d/S85power 화일을 다른 이름의 화일로 move 시킨다.
2. Configuration File
Power Management를 위한 configuration 화일은 /etc/power.conf 이며 pmconfig 명령에 의해 참조 된다.
System down에 관한 사항은 아래와 같이 지정할 수 있다.
#Auto-Shutdown Idle(min) Start/Finish(hh:mm) Behavior
autoshutdown 30 9:00 9:00 shutdown
위와 같이 지정하면 30분 동안 시스템이 사용되지 않으면 시스템이 down 된다.
powerd daemon이 구동중이라 하더라도 시스템이 down되지 않게 power.conf 화일에 지정하려면 아래와 같이 4번째 항목에 "noshutdown" 으로 지정한다.
#Auto-Shutdown Idle(min) Start/Finish(hh:mm) Behavior
autoshutdown 30 9:00 9:00 noshutdown
########################################################################################
########################################################################################
########################################################################################
[TIP] 한글 입력이 안되는 경우 조치방법
% env | grep LANG
LANG=ko
위와 같이 결과가 나오지 않으면 아래와 같이 지정한다.
1. csh을 사용하는 경우
% setenv LANG ko
% stty cs8 -istrip -parenb
2. sh 이나 ksh을 사용하는 경우
$ LANG=ko
$ export
$ stty cs8 -istrip -parenb
위의 내용을 아래와 같이 .cshrc화일이나 .profile에 설정하여 다음에 새로
login 을 했을 때도 적용이 되도록 한다.
3. csh을 사용하는 경우
% vi ~/.cshrc
setenv LANG ko
stty cs8 -istrip -parenb
4. sh 이나 ksh을 사용하는 경우
$ vi ~/.profile
LANG=ko
export
stty cs8 -istrip -parenb
########################################################################################
########################################################################################
########################################################################################
[TIP] 사용자별 디스크 사용량 제한하는 방법
1. 개요
각 유저당 disk block이나 inode 수를 제한해서 디스
크의 사용을
제한할 수 있다.
2. setting Quotas
# su
# vi /etc/vfstab
/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7
/home ufs 2 yes rq
Quota를 사용하려고 하는 filesystem에 먼저 quotas
file를 만들어 주어야한다.
# touch /home/quotas
# chown root /home/quotas
# chmod 600 /home/quotas
각 사용자의 사용량을 할장
# /usr/sbin/edquota user1
~
fs /home blocks (soft = 0, hard = 0) inode
(soft = 0, hard = 0)
~
* edquota [ -p proto_user] user ..........
여러사용자들의 Quota를 만들고자 할때 -p option을
사용해서 proto_user의 값과 동일하게 설정한다.
* edquota -t user1 user2 ....
fs /home blocks time limit = 3.50 days, files time
limit = 3.50 days
위의 예제에서 t option을 이용하여 time limit를
setting한다.
time limit setting이란 생성된 file이 setting된 기
간이 경과되면(단 수정된 file의 경우) soft limit까
지 자동으로 소멸된다는 것이다. 그러므로 주의를 요
한다. default값은 7.0 days
quota and repquota : View Quotas
# quota user1
* 만약 soft limit를 초과하면 경고를 뿌려주고,
hard limit를 초과하면 더 이상의 file writting이 않
된다.
* 1 block은 1024 byte이고 unlimit로 setting하는 경
우는 0으로 setting하면 된다.
3. checking Quotas
각 partition의 사용자별 사용량을 KB단위로 보여준
다.
# quot /dev/dsk/c0t2d0s7
/dev/dsk/c0t2d0s7 (/home) :
711024 root
498 user1
302 user2
1 user3
1 ser4
# quot -a (모든 partition의 사용자별 사용량을 KB단
위로 보여준다)
# quot -f /dev/dsk/c0t2d0s7 (block size 뿐만아니
라 file count도 보여준다.)
# repquota -v -a
# quota -v user1
########################################################################################
########################################################################################
########################################################################################
[정보] 기본적인 에러메세지라네요...
마주치게될지도 모르는 에러 메세지들
-----------------------------------------
Login incorrect
- 유효하지 않은 ID 그리고(또는) Password일때. 이것은 아무른 의미도 없다. UNIX에서는 유효한 사
용자 ID를 추측해낼 방법이 없다. 접속해 들어가고자 할때 이 메세지를 마주치게 될지도 모른다.
No more logins
- 시스템이 더 이상의 사용자를 받아들이지 않고자 할때 나타난다(다운될수도 있으므로).
Unknown id
- 유효하지 않은 id가 (su) 명령어를 사용하여 입력되었을때 발생.
Unexpected eof in file
- 파일이 손상되었을때.
Your password has expired
- 비록 이러한 경우가 있기는 하지만 드물다. /etc/shadow 파일에서 password가 변하는 기간을 알수 있다.
You may not change the password
- 아직 password가 충분한 기간동안 사용되지 않았다. 관리자가 그 기간을 정한다.
Unknown group [groups name]
- chgrp명령이 실행되었을때, 그 group이 존재하지 않으면 발생한다.
Sorry
- 유효하지 않은 수퍼 유저 패스워드를 입력했음을 나타냄 (su명령의 실행시)
Permission denied!
- 패스워드를 바꿀때 반드시 owner이거나 수퍼 유저이어야 함을 나타냄.
Sorry <[# of weeks] since last change
- 충분한 기간이 지나지 않았는데 패스워드를 바꾸고자 할때.
[directory name]: no permission
- 권한이 없는 디렉토리를 지우고자 할때.
[file name] not removed
- 쓰기 권한이 없는 다른 사용자 소유의 파일을 삭제하고자 할때.
[dirname] not removed
- 지우고자 하는 디렉토리의 권한이 없을때.
[dirname] not empty
- 디렉토리에 파일이 있을때. 그러므로 rmdir 명령을 수행하기 위해서는 파일들을 먼저 지워야 한다.
[command] not found
- UNIX에 유효하지 않은 명령을 입력했을때
can't execute pwd
- 시스템에 문제가 있어 pwd 명령을 수행할수 없을때
cannot chdir to ..
- (.. 한단계 위의)권한이 요구될때. pwd명령 수행시.
cant open [file name]
- 잘못된 경로, 파일 이름, 또는 읽기 권한이 없을때
cp:[file name] and [file name] are identical
- 말 그대로임
cannot locate parent directory
- mv 명령 사용시 발생
[file name] not found
- 이동시키고자 하는 파일이 존재하지 않을때.
You have mail
- 말 그대로임
기본적인 네트워킹 유틸리티 에러 메세지들
---------------------------------------
cu:not found
- 네트워킹이 설치되지 않음
login failed
- 유효하지 않은 id/pw 또는 틀린 번호
dial failed
- 틀린 번호때문에 시스템이 응답하지 않음
uucp completely failed
- -s 다음에 파일을 명시하지 않음
wrong time to call
- 시스템 파일에 명시되지 않은 시간에 호출했을때
system not in systems
- 시스템 파일에 없는 원격 호스트를 호출했을때
모르는 분들에게 도움이 되기를...
ㅎㅎㅎ ^^........
########################################################################################
########################################################################################
########################################################################################
[TIP] 시스템이 shutdown된 후 부팅이 안될때
.. 시스템이 shutdown된 후 부팅이 안됩니다.
♣ 서버를 운영하다 갑작스런 정전이나 부주의로 시스템이 shutdown됐을때...
1) 시스템이 싱글모드로 떨어지는 경우
WARNING - unable to repair the file system, Run Fsck
manually (fsck -F ufs /dev/rdsk/c0t0d0s0) Exit ther shell whern
done to continue the boot precessor
Type Ctrl-d to preceed with normal startup
(or give root password for system maintenance):
☞ 해결책 : 위와 같은 경우는 파일시스템이 깨져서 나타나는 현상으로 아래와 같이 조치하세요.
ok> boot cdrom -s ---- cd 로 single mode 부팅
# fsck -F ufs /dev/dsk/c0t0d0s0
에러가 생기는 디스크를 선택해서 file system 체크
기술자료란의 fsck 참조
2) booting시 bootblock을 못 찾을때 조치사항
..
Boot device: /iommu/sbus/espdma@f, 400000/esp@f, 800000/sd@3,0 File and args:
bootblk: can't find the boot program
Program terminated
Type help for more information
ok>
☞ 해결책 : 위와 같은 경우는 부트 디스크의 부트블럭이 깨진 경우로 아래와 같이 조치하세요
Cdrom drive에 O/S cdrom을 넣은 후
ok> boot cdrom -s ----> single mode로 booting
# uname -a ---> 서버의 아키텍처를 확인 (sun4u)
SunOS ns 5.7 Generic_106541-11 sun4u sparc SUNW,Ultra-1
# cd /usr/platform/sun4u/fs/ufs
# installboot bootblk /dev/rdsk/c0t0d0s0
----> boot block install(부트디스크의 SCSI ID 확인)
# reboot
########################################################################################
########################################################################################
########################################################################################
[정보] 솔라리스 9에서의 패치 프로의 설치
솔라리스 9에서는 smc에 의해서 패치 관리가 가능합니다
이기능을 사용하기 위해서는 patch pro 를 설치 하셔야 합니다.
현재 버전이 2.1 이고
https://sunsolve.sun.com/patchpro/
여기에 가시면 받으실수 있습니다.
먼저 같이 가보실까요?
여기에 가면 동의 해야 합니다 .
동의 하시고 맨 아래 솔라리스 9 를 위핸 패치 프로가 있습니다.
그럼 설치..
tar.gz 로 되어 있으니 gunzip 과 tar를 이용해서 푸시고
설치를 시작하세요
맨먼저 path와 man path를 환경 파일에 넣어 줍니다. 아래와 같이.
Bourne shell:
PATH="/opt/SUNWppro/bin:${PATH}"; export PATH
MANPATH="/opt/SUNWppro/man:$MANPATH"; export MANPATH
Csh:
setenv PATH "/opt/SUNWppro/bin:${PATH}"
setenv MANPATH "/opt/SUNWppro/man:$MANPATH"
그리고 나서 root 로 설치를 합니다.
설치가 끝나고 sunsolve에 아뒤를 등록해야 합니다. id가 없으신 분은 sunsolve.sun.com에 가셔서 id를 만듭시다.
아래 처럼 합니다. user_id는 id를 넣으시고 your_passwd는 패스워드를 넣으세요
pprosetup -u user_id
echo your_passwd > /opt/SUNWppro/lib/.sunsolvepw
위에 것이 안되면 /opt/SUNWppro/lib/.sunsolvepw 파일을 삭제 하고 해보세요..
패치서버의 위치를 넣어 줘야 합니다. 넣지 않아도 default로 설정이 되어 있습니다
Americas (default)
https://americas.patchmanager.sun.com/patchmanager/
Europe https://emea.patchmanager.sun.com/patchmanager/
Japan https://japan.patchmanager.sun.com/patchmanager/
사용하는 방법은 아래와 같이 서버 를 넣습니다. your_server 대신에 위에 3개중 하나를 넣습니다.
pprosetup -P your_server
이건 옵션입니다. 프록시를 사용한다면 넣구요 안쓰신다면 안함 됩니다.
pprosetup -x your_proxy:your_proxy_port
문제 가 생기면 이것을 확인 해보십시요
/etc 가 0755 퍼미션을 가졌는지
그리고
/var/sadm/install/admin/default
이 파일에
conflict=nocheck
이렇게 되었는지확인을 해보세요....
그리고 나서는 이렇게 따라 하세요......
# /usr/j2se/jre/bin/keytool -import -alias smicacert \
-file /etc/certs/SUNW/smicacert.b64 \
-keystore /usr/j2se/jre/lib/security/cacerts
A sample run is shown as follows:
Enter keystore password: changeit
Owner: O=Sun Microsystems Inc, CN=Sun Microsystems Inc CA (Class B)
Issuer: CN=Sun Microsystems Inc Root CA, O=Sun Microsystems Inc, C=US
Serial number: 1000006
Valid from: Mon Nov 13 11:23:10 PST 2000 until: Fri Nov 13 11:23:10 PST 2009
Certificate fingerprints:
MD5: B4:1F:E1:0D:80:7D:B1:AB:15:5C:78:CB:C8:8F:CE:37
SHA1: 1E:38:11:02:F0:5D:A3:27:5C:F9:6E:B1:1F:C4:79:95:E9:6E:D6:DF
Trust this certificate? [no]: yes
Certificate was added to keystore
# /usr/j2se/jre/bin/keytool -import -alias smirootcacert \
-file /etc/certs/SUNW/smirootcacert.b64 \
-keystore /usr/j2se/jre/lib/security/cacerts
A sample run is shown as follows:
Enter keystore password: changeit
Owner: CN=Sun Microsystems Inc Root CA, O=Sun Microsystems Inc, C=US
Issuer: CN=GTE CyberTrust Root, O=GTE Corporation, C=US
Serial number: 200014a
Valid from: Tue Nov 07 14:39:00 PST 2000 until: Thu Nov 07 15:59:00 PST 2002
Certificate fingerprints:
MD5: D8:B6:68:D4:6B:04:B9:5A:EB:34:23:54:B8:F3:97:8C
SHA1: BD:D9:0B:DA:AE:91:5F:33:C4:3D:10:E3:77:F0:45:09:4A:E8:A2:98
Trust this certificate? [no]: yes
Certificate was added to keystore
Note that the default password for Java keystore is "changeit". We
recommend that you change it to a non-default password, by running
keytool as follows:
# /usr/j2se/jre/bin/keytool -storepasswd -keystore
/usr/j2se/jre/lib/security/cacerts
You will be prompted for old and new passwords.
STEP 2. Import Sun patch signing certificate into the Java system
keystore. To import the certificates, run the following command as
root:
# /usr/j2se/bin/keytool -import -alias patchsigning -file \
/opt/SUNWppro/etc/certs/patchsigningcert.b64 -keystore \
/usr/j2se/jre/lib/security/cacerts
A sample run is shown as follows:
Enter keystore password: changeit
Owner: CN=Enterprise Services Patch Management, O=Sun Microsystems Inc
Issuer: O=Sun Microsystems Inc, CN=Sun Microsystems Inc CA (Class B)
Serial number: 1400007b
Valid from: Mon Sep 24 13:38:53 PDT 2001 until: Sun Sep 24 13:38:53 PDT 2006
Certificate fingerprints:
MD5: 6F:63:51:C4:3D:92:C5:B9:A7:90:2F:FB:C0:68:66:16
SHA1: D0:8D:7B:2D:06:AF:1F:37:5C:0D:1B:A0:B3:CB:A0:2E:90:D6:45:0C
Trust this certificate? [no]: yes
Certificate was added to keystore
따라 하시면 되고요 한글 언어 팩이라면 no/yes 대신에 예/아니오로 물을수 도 있습니다..
참고 하세요..
########################################################################################
########################################################################################
########################################################################################
[정보] ls에 색깔을 넣자.
ls 하면 밋밋해서 싫죠??
솔라리스 8을 쓰신다면
sunfreeware에서 fileutil 이라는 패키지가 있습니다 이걸 까시고 설치 하시고요.. 그럼
ls가 /usr/local/bin에 깔리낭 아마 그럴께에요
그리고 나선
본인의 쉘에다가
alias ls="/usr/local/bin/ls --color" 이라고 해주심 됩니다.
alias 는 쉘마다 쪼금씩 틀리기 땜시 .. 자기 환경에 맞추시고
9버전을 쓰신다면 www.gnu.org 에서 검색하셔서..ㅎㅎㅎ
http://ftp.gnu.org/pub/gnu/fileutils/fileutils-4.1.tar.gz 이거 링크니까 이거 받으셔서..
설치 하시면.. 사용이 가능합니다. ^^;;.. 안되심 리플 달아 주세요..
########################################################################################
########################################################################################
########################################################################################
[TIP] 날자별로 변경되는 파일 가져오기
ftp로 매일 변경되는 파일ex> 20030101로 되는 파일 가져오기
#!/usr/bin/ksh
file=$( date +"%Y%m%d" )
ftp -n black1 > ftp.log << EOF
user node sait00
hash
prompt
cd log
get $file
quit
EO
########################################################################################
########################################################################################
########################################################################################
[TIP] process 관련 명령어.. ps 이외의 명령어입니다. [공통]
프로세스 상태를 추적, 관리하기
프로세스의 상태를 체크하기 위해 ps 명령어나 proctool, top 등을 써 보았을 것입니다.그런
데 많은 분들이 유용하게 사용할 수 있는 명령어들을 몰라서 소개해 놓았습니다.
프로세스를 관리하는 명령어들이 /usr/proc/bin에 있으므로 PATH를 추가하면 이후 내용을
해보기가 쉽겠죠
본,콘쉘 상태에서
#PATH=/usr/proc/bin:$PATH;export PATH
1. ptree :프로세스 트리구조를 보여준다
# ps -ef |grep netscape 해서 나온 결과가
dol 669 655 82 18:58:20 ? 65:55 /opt/netscape/netscape
프로세스 아이디가 669번 이므로
#ptree 669
269 /usr/dt/bin/dtlogin -daemon
541 /usr/dt/bin/dtlogin -daemon
561 /bin/ksh /usr/dt/bin/Xsession
613 /usr/dt/bin/sdt_shell -c unset DT; DISPLAY=:0;
/usr/dt/bin/dt
616 -ksh -c unset DT; DISPLAY=:0;
/usr/dt/bin/dtsession_res -merg
655 /usr/dt/bin/dtsession
669 /opt/netscape/netscape
676 (dns helper)
위의 결과를 보면 269번 dtlogin이 dtlogin을 생성한뒤 dtlogin이 561번을 생성 561번이 613
을 등등등.... 669번의 netscape 가 676번을 호출한 것을 알 수 있다.
2. pstop : 프로세스를 정지한다
#pstop 669
netscape 을 잠시 정지한다
3. prun : 프로세스를 다시 시작한다
#prun 669
netscape 을 다시 시작한다
4 pcred : 프로세스의 보안정보 표시
#pcred 669
669: e/r/suid=101 e/r/sgid=14
effective,real saved(u/g)id를 표시한다.
5. 프로세스의 메모리 맵상의 정보 표시
#pmap 669
669: /opt/netscape/netscape
00010000 13124K read/exec /opt/netscape/netscape
00CF0000 988K read/write/exec /opt/netscape/netscape
00DE7000 15816K read/write/exec [ heap ]
EEE60000 8K - [ anon ]
메모리 주소번지와 메모리 세그먼트의 사이즈를 표시한다.
6. pflags : 프로세스와 플래그 정보, 시그널 핸들링 상태 등을 표시
#pflags 669
669: /opt/netscape/netscape
data model = _ILP32 flags = PR_ORPHAN
/1: flags = PR_PCINVAL|PR_ASLEEP [ poll(0xef201a00,0x5,0xa603) ]
sigmask = 0x00002000,0x00000000 lwppend = 0x00002000,0x00000000
플래그와 시그널 핸들링 상태 등을 표시한다 .
7. pldd : 다이나믹 라이브러리에 링크된 정보 표시
#pldd 669
669: /opt/netscape/netscape
/usr/dt/lib/libXm.so.3
/usr/openwin/lib/libXt.so.4
/usr/openwin/lib/libXmu.so.4
/usr/openwin/lib/libXext.so.0
/usr/openwin/lib/libX11.so.4
...
링크된 다이나믹 라이브러리들 표시해준다.
8. ptime : 수행 시간 표시
#ptime ls
dtdbcache_:0 ps_data sdtvolcheck677 speckeysd.lock
real 0.166
user 0.029
sys 0.057
실제 수행시간, 유저프로세스시간, 시스템 프로세스 시간을 보여 준다 .
9. pfiles : open한 파일 표시
#pfiles 669
669: /opt/netscape/netscape
Current rlimit: 64 file descriptors
0: S_IFCHR mode:0620 dev:32,24 ino:76843 uid:101 gid:7 rdev:24,2
O_RDWR|O_LARGEFILE
1: S_IFCHR mode:0666 dev:32,24 ino:76599 uid:0 gid:3 rdev:13,2
해당 프로세스와 연관된 파일들과 열수 있는 파일갯수를 확인 할 수 있다.
10. pwdx 프로세스의 현재 디렉토리 표시
#ps -e |grep cmdtool
#pwdx 669
669: /w/dol
11. pwait : 프로세스가 끝날 때까지 기다림
#ps -e | grep cmdtool
273 console 0:01 cmdtool
281 console 0:01 cmdtool
중간에 281을 kill 한다
# pwait -v 281
281: terminated, wait status 0x0000
12. psig : 프로세스의 시그널 처리 성향 표시
#psig 669
669: /opt/netscape/netscape
HUP caught 0
HUP,INT,QUIT,ILL,TRAP,ABRT,EMT,FPE,BUS,SEGV,SYS,PIPE,ALRM,TERM,USR1,USR
2,CLD,PWR,WINCH,URG,POLL,TSTP,CONT,TTIN,TTOU,VTALRM,PROF,XCPU,XFSZ,W
AITING,LWP,FREEZE,THAW,CANCEL,LOST,RTMIN ....
시그널 처리 성향을 보여준다.
13. pstack : 스택의 점유상태 표시
#pstack 669
669: /opt/netscape/netscape
ef31437c poll (ef201a00, 5, 29bb)
ef2ce3dc select (ef201a28, ef201c70, ef334ffc, ef201c74, ef335000, 1d) + 298
Hex값과 심볼릭 값으로 스택에 있는 상태 표시, 만일 문제가 생긴 프로세스이면 어디에서
프로세스가 정지 했는지 확인 할 수 있다.
########################################################################################
########################################################################################
########################################################################################
[TIP] floppy disk ufs filesystem format 하기.... [공통]
1. floppy diskette을 drive에 넣고 아래와 같이 fdformat 명령을 실행한다.
# fdformat -U -b "label-name"
Formatting 1.44 MB in /vol/dev/rdiskette0/no_name
Press return to start formatting floppy.
..................................................................
#
위의 명령중 각 option 의 내용은 아래와 같다.
-U : floppy diskette이 이미 mount 된 경우라도 umount하여 format한다.
-b : diskette의 label 이름을 지정하기 위한 option이다
"label-name" : diskette에 지정할 label 이름이다.
이 이름은 floopy diskette 을 mount하였을때 생기는 실제
mount point(/floppy/"label-name")의 이름이 된다.
2. format 이 정상적으로 끝나면 "newfs" 명령을 실행하여 filesystem을 만든다.
# newfs /dev/rdiskette0
만약 위의 명령을 실행했을때 아래와 같이 error message가 발생하면 volume manager
daemon인 "vold" 를 종료시킨 후 다시 newfs 명령을 실행한다.
# newfs /dev/rdiskette0
/dev/rdiskette0: Device busy
# ps -ef|grep vold
root 267 1 0 11월 28 ? 0:02 /usr/sbin/vold
^^^^^
vold process id
# kill 267
# newfs /dev/rdiskette0
newfs: construct a new file system /dev/rdiskette0: (y/n)?
위와 같이 new file system을 만들것인지 물어보면 "y"와 "retunrn" key를 친다.
3. newfs가 정상적으로 끝나면 "vold" process가 실행중인지 확인한 후, 실행중이
아니면 vold를 실행한다.
# ps -ef|grep vold
root 8321 1 1 17:26:20 ? 0:00 /usr/sbin/vold
위와 같이 결과가 나오지 않으면 아래와 같이 명령을 실행한다.
# /etc/init.d/volmgt start
volume management starting.
4. "volcheck" 명령을 실행하여 floppy diskette을 mount한후 "df" 명령으로 mount가
되었는지 확인한다.
# volcheck
# df -k
파일시스템 K바이트 사용 가용 용량 설치지점
/dev/dsk/c0t0d0s0 1813958 696114 1063426 40% /
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
/vol/dev/diskette0/"label-name"
1263 9 1128 1% /floppy/"label-name"
위의 결과중 "label-name"은 diskette을 format 할때(fdformat) 지정한 label
name 이다.
########################################################################################
########################################################################################
########################################################################################
[TIP] 파일 확장자 한꺼번에 바꾸기...shell script [공통]
유닉스에서 불편한점은 여러개의 확장자가 같은 파일의 확장자를 한꺼번에 이름을 바꾸어주려면 매우 불편합니다.
예를 들어..
test.tot 를 test.txt 로 바꿔줘야 한다면.. 간단하죠..
$ mv test.tot test.txt 이렇게 하면 됩니다.
하지만 test.tot, test1.tot, test3.tot 등 2개이상의 파일을 한꺼번에
test.txt, test1.txt, test3.txt로 바꿔줘야 할 때는?
음... 이거 문제입니다.. ㅡㅡ;
한꺼번에 바꿔주는 명령이 유닉스에서는 존재하지 않습니다. ㅡㅡ;
이걸 쉘 프로그램으로 해결 했습니다.
그럼..아래의 텍스트를 복사해서 그대로 파일로 만들어 쓰시기 바랍니다.
복사한 다음에는 반드시 다음과 같은 명령을 내리셔야합니다.
스크립트 이름을 ext.sh 라고 가정한다면..
# chmod 755 ./ext.sh -> 실행권한을 주는겁니다.
# ./ext.sh -> 실행합니다.
그럼.. 다음을 vi 로 작성하시면 됩니다.
============= 파일 시작 ==================
#!/bin/ksh
# Script Name : ext.sh
# Program Explan : change extention of all files in curent director
# by vivakim
# 2003. 2. 7
# !! Coution !!
## This Progrm is only in xxx.xxx file used
# The Other files is unusable
##################################################3
echo "insert source ext : \c" # source extention input
read X2
echo "insert result ext : \c" # Result extention input
read R2
if [[ "$R2" = "" ]] || [[ "$X2" = "" ]] # argument check
then
echo "insert two args"
exit 1
fi
ls *.$X2 > tmpfile 2> /dev/null # save file
if [[ $? != 0 ]] # extention check
then
echo "$X2 is not found"
exit 2
fi
IFS='.' # Field seperator setting in '.'
while read X1 X2 # X1 is filename X2 is extention
do
EXTS="$X1.$X2" # EXTS is source entire filename
EXTR="$X1.$R2" # EXTR is Result entire filename
mv "$EXTS" "$EXTR"
echo "$EXTS to $EXTR change sucess"
if [[ $? != 0 ]] ; then
echo " $EXTS to $EXTR change false "
exit 3
fi
done < tmpfile
rm tmpfile # tmp file deleted
비고 : oracle
| Datatype | 설 명 |
|---|---|
| VARCHAR2(size) | size 만큼 2000개까지 문자열 데이터 저장. 가변형. |
| CHAR(size) | size 만큼 255개 문자까지 문자열 데이터 저장. 고정형. |
| NUMBER | 실수형 데이터 저장 NUMBER(p,s) |
| NUMBER(p,s) | 숫자데이터를 저장. p는 최대자리수, s는 소수점 이하 자리수 |
| DATE | BC 4712년 1월 1일부터 AD 4712년 12월 31일까지의 날짜를저장 * 기본 날짜 형식은 'DD-MON-YY' 임 |
| LONG | 2GB의 문자까지 문자열 데이터를 저장. |
| 비고사항 | * CHAR과 VARCHAR2의 사용 - 데이터의 update가 잦은 칼럼은 char형은 씀. - 한 칼럼에서 고정된 길이의 데이터를 입력할 경우는 char형, 가변형길이의 데이터를 입력할 경우는 varchar를 사용. |
| Datatype | 설 명 |
|---|---|
| VARCHAR2(size) | 가변길이 문자열. 자신의 실제길이로 저장됨. |
| CHAR(size) | 고정 문자열, 최대값은 8000 |
| NCHAR(n) | 고정길이 유니코드 문자셋 저장. CHAR는 1바이트를 사용함에비해, NCHAR는 2바이트를 사용. 최대 4000. |
| NVARCHAR(n) | 가변길이 유니코드 문자셋. |
| TEXT(n) | 최대 2GB까지의 고정길이 문자열 저장 |
| NTEXT(n) | 큰 가변 길이 문자 데이터 저장. TEXT는 1바이트, NTEXT는 2바이트사용. |
| INT | 정수값 표현. 4바이트. |
| SMALLINT | 정수값 표현. 2바이트(-32768~32767 |
| TINYINT | 음이 아닌 정수값 표현. 1바이트(0~255) |
| DECIMAL(p,[s]) | 고정 소수점 값. |
| NUMBER(p,[s]) | DECIMAL과 동의어. |
| REAL | 부동소수점 값 |
| FLOAT[(p)] | 부동소수점 값 |
| MONEY | 화폐값을 표현 하는 데 사용. 8바이트 |
| SMALLMONEY | MONEY와 같지만, 4바이트 사용. |
| DATETIME | 4바이트의 정수값으로 저장되는 DATE와 TIME을 저장. |
| SMALLDATETIME | 2바이트의 정수값으로 저장되는 DATE와 TIME을 저장 |
| Datatype | 설 명 |
|---|---|
| VARCHAR(a,b) | 가변길이 문자열. 자신의 실제길이로 저장됨. Max 255 |
| CHAR(size) | 고정 문자열, 최대값은 32767 byte |
| TEXT | 최대 2GB까지의 고정길이 문자열 저장 blobspace공간을 만들어저장하는 것이 IO향상됨 |
| Byte | 최대 2Gb까지의 바이너리 데이터 저장blobspace공간을 만들어별도로 저장 |
| INT | 정수값 표현. 4바이트. |
| SMALLINT | 정수값 표현. 2바이트(-32768~32767 |
| SERIAL | 서버에 의해 자동적으로 1씩 증가 내부적 int와 동일 |
| DECIMAL(p,[s]) | 고정 소수점 값. ? 숫자형은 모두 decimal로 하는 것이 좋다.엔진에서 decimal로 처리 |
| REAL | 부동소수점 값 |
| FLOAT | 16자리 부동소수점 값 |
| SMALLFLOTE | 8자리 부동 소수점 |
| MONEY | 화폐값을 표현 하는 데 사용. Decimal 형태로 저장되며 $와 소수점뒤에 두자리 표시 DBMONY=’\’;export DBMONEY |
| DATETIME INTERVAL | 4바이트의 정수값으로 저장되는 DATE와 TIME을 저장. |
| DATE | 2바이트의 정수값으로 저장되는 DATE만 저장 DBDATE=y4md/;exportDBDATE |
비고 : oracle
- 데이터베이스(oracle instance당 한 개가 존재) >테이블스페이스(system, nonsystem tablespace로 나누어 장치간 적절히스토리지를 분배해야 함, 물리적인 공간) > 세그먼트 ( 테이블세그먼트, 인텍스 세그먼트, 임시세그먼트, 롤백세그먼트 :tablespace에 있는 여러 datafile에 걸처서 생성할 수 있음)>datafile(물리적 공간) > 익스텐트( 연속된 블록의 집합 ) >데이터 블록 (가장 작은단위의 저장공간)
비고 : MS-SQL
- 데이터 베이스 ( system database : master,tempdb,msdb,model userdatabase로 나누며 user database는 여러 개 생성할 수 있음 ) > 주데이터 파일( .mdf ), 보조 데이터 파일( .ndf), 로그 데이터 파일 (.ldf ) > 익스텐트 > 블럭
비고 : Informix
- dbspace ( system, nonsystem dbspace로 구별하여 생성해야 함 ) >chunk (물리적인 데이터 공간) > database ( 한 dbspace에 여러 개의데이터베이스 생성 가능 ) >chunk(물리적은 공간 cook device, rawdevice로 구성할 수 있음) > tablespace ( extent들의 연속된 공간 )> extent > page
비고 : oracle-sqlplus를 이용해서 server에 connection
| 함수명 | 설명 | Ver. | ||
|---|---|---|---|---|
| 날자함수 | DATE | DATE(char1) | 비날자형 값을 날자로 변환 | ALL |
| DAY | DAY(d1) | 날자형값중 일을 구함 | ALL | |
| MONTH | MONTH(d1) | 날자형값중 월을 구함 | ALL | |
| WEEKDAY | WEEKDAY(d1) | 날자형값중 요일을 구함 | ALL | |
| YEAR | YEAR(d1) | 날자형값중 년을 구함 | ALL | |
| EXTEND | EXTEND(d1 | 날자형값을 지정한 길이로 조정함 | ALL | |
| MDY | 비날자형 값을 날자로 변환 | ALL | ||
| 산술함수 | ABS | ABS(n) | n의 절대값 구함 | ALL |
| MOD | MOD(m,n) | m을 n으로 나눈 나머지 구함 | ALL | |
| POW | POW(m) | 값의 n제곱 구함 | ALL | |
| ROOT | ROOT(m) | 제곱근 구함 | ALL | |
| ROUND | ROUND(m,n) | m의 값을 n자리수 위치 기준으로 반올림 | ALL | |
| SQRT | ALL | |||
| TRUNC | TRUNC(m,n) | m의 값을 n자리수 위치 기준으로 반올림 | ALL | |
| 로그함수 | EXP | ALL | ||
| LOGN | ALL | |||
| LOG10 | ALL | |||
| 삼각함수 | SIN | SIN 함수 | ALL | |
| COS | COS 함수 | ALL | ||
| TAN | TAN 함수 | ALL | ||
| ASIN | ALL | |||
| ACOS | ALL | |||
| ATAN | ALL | |||
| ATAN2 | ALL | |||
| String 함수 | LENGTH | LENGTH(char1) | Charter 길이 구하기 | ALL |
| TRIM | TRIM(char1) | 공백 자르기 | ALL | |
| 집계함수 | COUNT | COUNT(*) | 건수 구하기 | ALL |
| AVG | AVG(m) | 평균 구하기 | ALL | |
| MIN | MIN(n) | 최소값 구하기 | ALL | |
| MAX | MAX(m) | 최대값 구하기 | ALL | |
| SUM | SUM(n) | 합 구하기 | ALL | |
| RANGE | RANGE(m) | 최대값과 최소값 차 구하기 | ALL | |
| STDEV | STDEV(n) | 표준편차 구하기 | ALL | |
| VARIANCE | VARIANCE(m) | 분산 구하기 | ALL | |
| 기타함수 | DBINFO | DBINFO(KEYWORD) | ALL | |
| TODAY | 오늘날자 | ALL | ||
| CURRENT | 현재 날자+ 시분초 | ALL | ||
| USER | 사용자 이름 | ALL | ||
| SITENAME | HOST명 구하기 | ALL | ||
| DBSERVER NAME |
INFORMIXSERVER 명 구하기 | ALL | ||
| NVL | NVL(m,n) | m값을 검사 NULL 이면 n값을 Return | 7.3Y | |
| DECODE | DECODE(c1,a1,A1,b1, B1,c1,C1,D1) |
Multi-Case 문 | 7.3Y | |
| CASE | SELECT 문에서 CASE 비교 | 7.3Y | ||
| INITCAP | INITCAP(char1) | 첫글자 대문자 | 7.3Y | |
| UPPER | UPPER(char1) | 대문자로 | ALL | |
| LOWER | LOWER(char1) | 소문자로 | ALL | |
| REPLACE | REPLACE(char1,search_string[,replacement_string]) | search_string 의 각 문자를 대응하는 replacement_string 으로치환 . replacement_string이 미지정이면 serach_string 을 제거 |
7.3Y | |
| SUBSTR | SUNSTR(char,m[n] | char의 m번째 문자부터 n개의 문자를 취한다 . | 7.3Y | |
| LPAD | LPAD(char1,n,[char2]) | Char1의 왼쪽에 Char2를 덧붇여 전체가 n문자로 되도록한다 .Char2가 미지정이면 blank 적용 | 7.3Y | |
| RPAD | RPAD(char1,n,[char2]) | Char1의 오른쪽에 Char2를 덧붇여 전체가 n문자로 되도록한다 .Char2가 미지정이면 blank 적용 | 7.3Y | |
| SPL로 제공되는 함수 | CEIL | n 보다 크거나 같은 최소 정수 | ||
| NEXT_DAY | ||||
| user 1 | user 2 |
| drop database user## ; create database user## with log; grant connect to public; begin work; create table test (a date); insert into test values (today); lock table test in exclusive mode; rollback work; select * from test; |
database user##; select * from test; set lock mode to wait 10; select * from test; set isolation to dirty read; select * from test; |
서론
|
내맘대로 정의한 Win 32 API 함수 PostMessage() GetKeyState() CClientDC dc; GetStyle() SetWindowLong() ZeroMemory() SetWindowPos() GetCursorPos() GetParent() SetCaputre() AfxGetMainWnd() pCmdUI->Enable() pCmdUI->SetText() pCmdUI->SetCheck() GetMenu()->GetSubmenu() 메뉴객체->AppendMenu() 메뉴객체->DeleteMenu() 툴바객체.CreateEx() 툴바객체.LoadToolBar() 상태바객체.SetPaneInfo() 상태바객체.SetPaneText() CSDI_SequenceApp() CSDI_SequenceApp()::InitInstance() AddDocTemplate() ProcessShellCommand() CMainFrame::PreCreateWindow() CSDI_SequenceApp:Run() 다이얼로그 관련 함수 메시지 함수
기타 함수 |