๐ก ํ์ฌ ์์คํ ์์ ์ํ๋๊ณ ์๋ ํ๋ก์ธ์์ ์ ๋ณด๋ฅผ ํ์ํ๋ ๋ช ๋ น์ด
<๋ฌธ๋ฒ>
$ps ์ต์ ํ๋ก์ธ์ ๋ฒํธ
$ ps -p 4291 : 4291์ ๋ํ ํ๋ก์ธ์์ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ค.
<์ต์ >
-p
: ํ๋ก์ธ์ ๋ฒํธ
-e
: ํ์ฌ ์คํ์ค์ธ ๋ชจ๋ ํ๋ก์ธ์
-f
: ์ค์ ์ ์ ๋ช , ๊ฐ์์๊ฐ๋ฑ์ ํ์
-l
: ํ๋ก์ธ์์ ์ํ, ์ฐ์ ๋ ๋ฑ๊ณผ ๊ฐ์ ์์ธํ ์ ๋ณด๋ฅผ ํ์
์ค์ต1.
ํ์ฌ ๋ฆฌ๋
์ค ์์คํ
์ ๋ ์๋ ๋ชจ๋ ํ๋ก์ธ์๋ค์ ๋ค ์ถ๋ ฅํ๊ธฐ
$ ps -ef
์ค์ต2.
ํ์ฌ ๋ฆฌ๋
์ค ์์คํ
์ ์๋ ์ค๋ผํด ์ ์ ์ ๋ํ ํ๋ก์ธ์๋ค๋ง ์ถ๋ ฅํ๊ธฐ
$ ps -ef | grep oracle
์ค์ต3.
์ ๋ ์๋ ํ๋ก์ธ์ ๋ช๊ฐ์ธ์ง ํ์ธ
$ ps -ef | grep oracle | wc -l
์ค์ต4.
pmon์ด๋ผ๋ ์ค๋ผํด ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์๊ฐ ์ ๋ ์๋์ง ํ์ธํ๊ธฐ
[orcl:~]$ ps -ef | grep pmon
oracle 5469 1 0 03:57 ? 00:00:04 asmpmon+ASM
oracle 5587 1 0 03:58 ? 00:00:04 ora_pmon_orcl
oracle 12140 11795 0 09:55 pts/5 00:00:00 grep pmon : ์๋ ๋ช ๋ น์ด๋ฅผ ์ํํ๊ณ ์๋ ๋ ์์ ํ๋ก์ธ์์ด๋ค. ์ด๊ฒ ์๋์ค๊ฒ ํ๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ด-v
๋ฅผ ์จ์ค๋ค.[orcl:~]$ ps -ef | grep pmon | grep -v grep
oracle 5469 1 0 03:57 ? 00:00:04 asmpmon+ASM
oracle 5587 1 0 03:58 ? 00:00:04 ora_pmon_orclโ grep -v grep ์ grep๋ช ๋ น์ด๋ฅผ ์ํํ๋ ์ธ์ ์ ๋์ค์ง ์๊ฒ ํฉ๋๋ค.
๐ก ํ์ฌ ๋ฆฌ๋
์ค ์์คํ
์ ๋์คํฌ(disk)์ ์ฌ์ฉ ํํฉ์ ์ค์๊ฐ ํ์ธํ๋ ๋ช
๋ น์ด
โ๐ป dba์๊ฒ ์ ์ฉํ ๋ฆฌ๋
์ค ๋ช
๋ น์ด 4๊ฐ์ง
1. top
2. kill
3. ps
4. sar
<๋ฌธ๋ฒ>
$ sar 1 100
โ disk i/o๋ฅผ ํ๋ฐํ ์ผ์ผํค๋ฉด(๋ฐ์ดํฐ๋ฅผ ํ๋ฐํ ์์ธ์ค), ์ด ์ฌ์ฉ์จ์ด ์ฌ๋ผ๊ฐ๋๋ค.
โ100
์ ๋ฐฑ๊ฐ ๋์ค๋ ๊ฒ! 1000 ์ฐ๋ฉด ์ฒ๊ฐ๊ฐ ๋์จ๋ค.
โ %user ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ๋ชจ๋ํฐ๋ง ํ๋ฉด ๋๋ค. ๋ฆฌ๋ ์ค ์๋ฒ์ ๋ถํ๊ฐ ์ฌํ ์์ ์ ํ๋ฉด %user๋ถ๋ถ์ ์ฌ์ฉ์จ์ด 100์ ๊ฐ๊น๊ฒ ์ฌ๋ผ๊ฐ๋ค.
%user
: oracle ์ ์ ์ ๊ฐ์ด ์ผ๋ฐ ์ ์ ๊ฐ ์ฌ์ฉํ๋ disk i/o
%nice
: cpu๋ฅผ ์๋ณดํ๋ ์น์ ๋ (๋ฎ์ผ๋ฉด ๋ฎ์์๋ก ์ข๋ค. -> ์์ ์ด ๋นจ๋ฆฌ์ํ๋จ)
%system
: system์ด ์ฌ์ฉํ๋ disk i/o (์์คํ ์ด ์์ฒด์ ์ผ๋ก ๋ฆฌ๋ ์ค๋ฅผ ์ด์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ )
%iowait
: disk i/o๋ฅผ ์ผ์ผํค๋ฉด์ ์ผ๋ง๋ ๋๊ธฐํ๊ณ ์๋์ง ์์น๋ฅผ ๋ณด์ฌ์ค๋ค.
%idle
: ์์ ์ ์ํ๊ณ ์๋ idleํ ์ํ
%steal
: ๋ค๋ฅธ ํ๋ก์ธ์์ ์์์ ์ผ๋ง๋ ๋บ๊ณ ์๋์ง
๋ฌธ์ 73. sar๋ช
๋ น์ด ์คํํ๊ณ , ๋ค๋ฅธ์ชฝ์์ ์
์ฑ sql ๋๋ ค๋ณด๊ธฐ
โ
์
์ฑsql ๋๋ ธ์ ๋ 45~50์ ๋๊น์ง ์ฌ๋ผ๊ฐ๋ค๊ฐ ๋๋๊น 0.5๋ก ๋จ์ด์ก๋ค.
โญ ํ์ฌ ๋ฆฌ๋
์ค ์๋ฒ๊ฐ ๋๋ฆฌ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ธ ํ์
์ ํด์ผํ๋ค.
1. who
๋๊ฐ ๋๋ฆฌ๊ฒ ํ๊ณ ์๋์ง? : top๋ช
๋ น์ด + ์ด์ ๋ง์ง๋ง๋ฌธ์ ์ฝ๋๋ก ํ์ธ๊ฐ๋ฅ
โก๏ธsqldeveloper์์ ๋๊ตฌ>์ธ์
๋ชจ๋ํฐ์ ๋ณด๋ฉด machine ์ด๋ผ๋ ์ปฌ๋ผ์ ๋์ค๋ ์ ๋ณด๊ฐ ํ์ฌ์์๋ ์๊ธฐ ์ปดํจํฐ ์ด๋ฆ์ด๋ค.
what
๋ฌด์์ด ๋๋ฆฌ๊ฒ ํ๊ณ ์๋์ง? ์ด๋ค sql์ธ์ง! : top๋ช
๋ น์ด + ์ด์ ๋ง์ง๋ง๋ฌธ์ ์ฝ๋๋ก ํ์ธ๊ฐ๋ฅwhen
์ธ์ ๋ถํฐ ๋๋ ค์ก๋์ง? : sar ๋ช
๋ น์ด๋ฌธ์ 74. ๋ด๊ฐ ํด๊ทผํ๊ฑฐ๋ ์๋ฆฌ๋ฅผ ๋น์ฐ๋ ๋์ ๋ฆฌ๋ ์ค ์์คํ disk i/o๊ฐ ์ธ์ ๋ถํฐ ์ผ๋ง๋ ๋ฐ์ํ๋์ง ํ์ธํ๋ ค ํ๋ค๋ฉด ? โก๏ธ text๋ก !
$ sar 1 20 >> sar_20230818.txt
๋ฌธ์ 75. ์ ๋ช
๋ น์ด๊ฐ ์๋ฒ์์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ํ๋๊ฒ ํ๊ณ , ๋๋ ๋
ธํธ๋ถ์ ๋๊ณ ํด๊ทผํ๊ณ ์ถ๋ค๋ฉด?
(&
๋ถ์ด๊ธฐ)
$ sar 1 20 >> sar_20230819.txt &
โ์์ฑ๋์๋์ง ํ์ธํ๊ธฐ !
โ ๋ช ๋ น์ด ๋์ &๋ฅผ ๋ถ์ด๋ฉด ๊ทธ ๋ช ๋ น์ด๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋๊ฒ ํ๋ ๊ฒ !
๋ฌธ์ 76. ์๋์ sar ๋ช ๋ น์ด๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ํํ๊ณ , ํฐ๋ฏธ๋ ์ฐฝ์ ํ๋ ์ด์ด์ ์ ์ฑ sql์ ์ํํด๋ณด๊ธฐ.
$ sar 1 100 >> sar_202308120.txt &
more sar_202308120.txt ํด๋ณด๋ 10:29๋ถ๋ถํฐ
๐ก ํ์ฌ ํ์ผ ์์คํ ์ ์ด ์ฌ์ฉ์จ์ ํ์ธํ๋ ๋ช ๋ น์ด
<๋ฌธ๋ฒ>
$ df -h
โ df -h ๋ช ๋ น์ด๋ก๋ ์ง๊ธ ํ์ฌ ๋ฆฌ๋ ์ค ์์คํ ์ ์ผ๋ง๋ ์ฌ์ ๊ณต๊ฐ์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค.
์์คํ ๊ด๋ฆฌ์ (ta)์๊ฒ ๋์คํฌ ์ฌ์ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ ๋๋นํด! ๋ผ๊ณ ์ด์ผ๊ธฐํด์ค์ผ ํฉ๋๋ค.
โป dba๊ฐ ํ์์ ํ์ธํด์ผํ ๊ณต๊ฐ ๊ด๋ฆฌ ๋ช
๋ น์ด?
1. ๋ฆฌ๋
์ค์์๋ df -h๋ช
๋ น์ด
2. ์ค๋ผํด์์๋ tablespace ์ฌ์ฉ๋ - ์คํฌ๋ฆฝํธ ์์
3. ๋ฐฑ์
๋ฐ์ดํฐ ๊ด๋ จํ ๊ณต๊ฐ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋ง(archive log file์ด full๋์ง ์๋๋ก ๊ด๋ฆฌํด์ผํ๋ค. ) โก๏ธ ์ค๋ผํด์ ์ค์ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๊ทธ ์ค์ํ ๋ฌธ์ ๋ฅผ ์๋ ค์ฃผ๋ ๋์
๋๋ฆฌ์ ์ ์ด์๊ฐ ๋ค์ด๊ฐ๋ฏ๋ก ๊ทธ ๋์
๋๋ฆฌ๋ฅผ ์กฐํํ๋ฉด ๋๋ค.
select * from dba_outstanding_alerts;
โ
ํ
์ด๋ธ ์คํ์ด์ค๊ฐ ๊ฝ ์ฐจ์ง๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์๋ฆผ์ด ์ ๋์
๋๋ฆฌ์ ๋์ค๊ฒ๋ ์ค์ ํด์ผํ๋ค.
๐ก ํ์ฌ ๋๋ ํ ๋ฆฌ์ txt ํ์ผ๋ค์ ์ด ํฌ๊ธฐ๋ฅผ ํ์ธํ๋ ค๋ฉด??
$ du *.txt
$ du -h *.txt : ํค๋ก๋ฐ์ดํธ ๋์จ๋ค.
$ du -c *.txt : ํ ํ ๋์จ๋ค.
$ du -ch *.txt :ํค๋ก๋ฐ์ดํธ์ ํ ํ์ด ๋์จ๋ค.
๐ก ํ์ฌ ๋ฆฌ๋ ์ค ์๋ฒ์ os๊ฐ ์ด๋ os ์ธ์ง ํ์ธํ๋ ๋ช ๋ น์ด
i386 GNU/Linux
โ ์ uname -an ์ ํ์ธํด์ผํ๋๋ฉด ์ค๋ผํด์ ์ค์นํ ๋ os๋ง๋ค ์ค์นํ์ผ์ด ๋ค ๋ค๋ฅด๋ฏ๋ก ๊ด๋ จ๋ ์ค์นํ์ผ์ ๊ฐ์ง๊ณ ์ค์น๋ฅผ ํด์ผํด์ ๋ฆฌ๋ ์คos๊ฐ ๋ญ์ง ์์์ผ ํ๋ค. ์ค๋ผํด์ ์ค๋ผํด ์ค์น ์ ๋ฌธ๊ฐ๊ฐ ํ์ฌ์ ์์ ์ฃผ๋ก ์ค์นํ๋ค.
๋ฌธ์ 77. ๊ตฌ๊ธ ์ฝ๋ ์ ๋ฆฌ๋ ์ค๋ ๋ฌด์์ธ์ง ํ์ธํด๋ด ๋๋ค.
!lsb_release -a
โ๏ธ ์ฐจ์ด์ ํ์ธ
๐ก ํ์ผ๋ค์ ํ๋๋ก ๋ฌถ๋ ๋ช ๋ น์ด
<๋ฌธ๋ฒ>
1. ํ์ผ๋ค์ ํ๋๋ก ๋ฌถ์ ๋$ tar cvf ๋ฌถ์ ํ์ผ๋ช ๋ฌถ์ ํ์ผ ๋์๋ค
- ๋ฌถ์ ํ์ผ์ ํ์ด๋ผ ๋
$ tar tvf ๋ฌถ์ ํ์ผ๋ช ํ์ด๋ผ ์์น
โ๏ธ ์ต์ :
c
: compress , ์ฌ๋ฌ๊ฐ์ ํ์ผ์ ํ๋๋ก ๋ง๋ค์ด๋ผ
v
: view , ๋ฌถ๋ ๊ณผ์ ์ ๋ณด์ฌ๋ฌ๋ผ!
f
: file , ์์ฑ๋๋ ํ์ผ๋ช ์ ์ง์
x
: extract , ๋ฌถ์ด์๋ ํ์ผ์ ํ์ด์ค๋ผ
-C
: ํ์ผ๋ค์ ํ์ด๋ผ ์์น๋ฅผ ์ง์
์ค์ต1.
ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ฅ์.txtํ์ผ๋ค์ด ๋ฌด์์ด ์๋์ง ๊ฒ์ํ๊ธฐ
ls -l *.txt
์๋ค๋ฅผ ๋ฌถ์ด์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ณด๋ผ ์ ์๋ค.
์ค์ต2.
์์์ ๋ณด์ด๋ ์ฌ๋ฌ๊ฐ์ textํ์ผ๋ค์ ํ๋๋ก ๋ฌถ์ผ์์ค
$ tar cvf sar_text.tar ./*.txt
./
๋ ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ผ๋ ๋ป. ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ฐ์ ์๋ ํ์ฅ์ *.txt ํ์ผ๋ค์ sar_text.tar ๋ผ๋ ์ด๋ฆ์ผ๋ก ํ๋์ ๋ฌถ์์ผ๋ก ๋ง๋ญ๋๋ค.
$ ls -l sar_text.tar
์ค์ต3.
sar_text.tar ์ ๋ฌถ์์ /home/oracle/test9๋ผ๋ ๋๋ ํ ๋ฆฌ์ ๋ฌถ์์ ํ๊ธฐ
- test9๋ง๋ค๊ธฐ
mkdir test9 (๋๋ ํ ๋ฆฌ ์์ฑ)- ์์ถํ๊ธฐ
tar xvf sar_text.tar -C /home/oracle/test9
๐ก vi ํธ์ง๊ธฐ๋ ์๋์ฐ๋ก ์น๋ฉด ๋ฉ๋ชจ์ฅ ๊ฐ์ ๊ฒ.
๋ฆฌ๋
์ค ๋ฉ๋ชจ์ฅ ๊ธฐ๋ฅ์ธ ์ด๊ฒ์ ๋ช
๋ น์ด๋ฅผ ์๊ณ ์์ด์ผ ์ฌ์ฉํ ์ ์๋ค.
์ค์ต1.
์ ๋ชฉ์ด a100.tx์ธ ํ์ผ ์์ฑํ๊ธฐ
$ vi a100.txt
์ด๋ฐ ์ฐฝ์ด ์ด๋ฆฐ๋ค.
์ค์ต2.
์ ๋ฉ๋ชจ์ฅ์ ์๋์ ๋ฌธ์ฅ์ ํ์ดํํ๊ธฐ
select ename, sal
from emp
where empno = 7788;
โญ ์
๋ ฅ๋ชจ๋๋ก ๋ณํ -> i
๋ฅผ ๋๋ฅด๋ฉด ์
๋ ฅ๋ชจ๋๊ฐ ๋๋ค!
โญ ์
๋ ฅ๋ชจ๋์์ ์๋์ command ๋ชจ๋๋ก ๋์์ค๋ ค๋ฉด esc
ํค๋ฅผ ๋๋ฅด์. (๋ฐฉํฅํค๋ก ์ฌ๋ผ๊ฐ๋ค ๋ด๋ ค๊ฐ๋ค ๊ฐ๋ฅ)
โ๏ธ vi ํธ์ง๊ธฐ ๋ช ๋ น๋ชจ๋ 3๊ฐ์ง
1. command๋ชจ๋ : vi ํธ์ง๊ธฐ์ ๊ธฐ๋ณธ๋ชจ๋์ด๋ค. ์คํํ๋ฉด ๋ฐ๋ก ๋ณด์ด๋ ํ๋ฉด์ ๋งํ๋ค. ์ด ์ํ์์๋ ๋ฐฉํฅํค๋ก ์๋ค๊ฐ๋ค ํ ์ ์๋ค. ํน์h(์ผ์ชฝ) / l(์ค๋ฅธ์ชฝ) / j(์๋) / k(์)
๋ฅผ ํตํด ์ด๋ ํ ์ ์๋ค.
2. edit ๋ชจ๋ : a,i,o,x ๋ฑ์ ๋๋ฅด๋ฉด์ ๋ด์ฉ์ ์ ๋ ฅ ๋๋ ์ญ์ ํ๋ ๋ช ๋ น๋ชจ๋
i
: ์ ๋ ฅ๋ชจ๋
a
: ์ ๋ ฅ๋ชจ๋์ธ๋ฐ ๊ณ์ ์์ ๋ง๋ถ์ฌ์ ์ฐ๊ฒ ๋ค
o
:์ ๋ ฅ๋ชจ๋์ธ๋ฐ ๋ค์๋ผ์ธ์ ์ฐ๊ฒ ๋ค.
x
: ์ฒ ์ ํ๋ ์ญ์
3. last line ๋ชจ๋ : ์ ๋ ฅ๋ชจ๋์์ ์ ์ฅ, ์ข ๋ฃ, ๊ฐ์ ์ข ๋ฃ ๋ฑ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ ๋ชจ๋
:wq!
: ์ ์ฅํ๊ณ ์ข ๋ฃ (๋จ์ถํค :ZZ
)
:q!
: ์ ์ฅ ์ํ๊ณ ์ข ๋ฃ (๋จ์ถํค :ZQ
)
โญ ํธ์ง๊ธฐ์์ ๋น ์ ธ๋์ค๋ ๋ฐฉ๋ฒ (:wq!
)
โ jobs.txt ํ์ผ์ viํธ์ง๊ธฐ์์ ์ด์ด์ h,l,j,k๋ก ์์ง์ฌ๋ณด๊ธฐ
vi jobs.txt
:set nu : ๋ฌธ์ฅ ์์ ๋ฒํธ ์์ฑ
:set nonu : ๋ฒํธ ๋ค์ ์์ ๊ธฐ
h
: ์ผ์ชฝ์ผ๋ก ์ด๋l
: ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋j
: ์๋๋ก ์ด๋k
: ์๋ก ์ด๋1G
: ๋งจ์๋ก ์ด๋G
: ๋งจ ์๋๋ก ์ด๋:set nu
: ํ์ผ๋ด์ ํ
์คํธ์ ๋ฒํธ๋ฅผ ํ์:set nonu
: ๋ค์ ์๋ณด์ด๊ฒ ํ๋ ๋ช
๋ น์ดgg
: ๋งจ์๋ก ์ด๋ํ๋ ๋จ์ถํค (์๋ฌธ์)x
: ์ฒ ์ ํ๋๋ง ์ญ์ dd
: ํ ํ ์ญ์ dw
: ๋ง์ฐ์ค ์ปค์๊ฐ ์๋ ๋จ์ด ์ญ์ :5,10 d
: 5~10๋ฒ์งธ ํ ์ญ์ D
: ์ปค์ ์ค๋ฅธ์ชฝ ํ ์ญ์ dG
: ๋ง์ฐ์ค ์ปค์๊ฐ ์๋ ํ๋ถํฐ ์๋ ๊น์ง์ ๋ชจ๋ ํ ์ง์ด๋ค.u
๋ฌธ์ 78. jobs.txt๋ฅผ jobs2.txt๋ก ๋ฐฑ์
$ cp jobs.txt jobs2.txt
๋ฌธ์ 79. jobs2.txt์ ์ด์ด์ 5๋ฒ์งธ ํ ์ง์ฐ๊ธฐ
dd
ํ๊ธฐ.u
๋ ์ทจ์
๋ฌธ์ 80. jobs2.txt์์ ์ 3์ค ๋จ๊ธฐ๊ณ ๋ค ์ง์ฐ๊ธฐ
dG
yy
: ํ๋์ ํ์ ๋ณต์ฌp
: ๋ถ์ฌ๋ฃ๊ธฐyG
: ํ์ฌ ํ๋ถํฐ ํ์ผ ๋๊น์ง ๋ณต์ฌ:1,2 co 3
: 1-2ํ์ 3ํ ๋ค์์ผ๋ก ๋ณต์ฌ:1,2 m 3
: 1-2ํ์ 3ํ ๋ค์์ผ๋ก ์ด๋๋ฌธ์ 81. jobs.txt๋ฅผ jobs3.txt๋ก ๋ฐฑ์
$ cp jobs.txt jobs3.txt
๋ฌธ์ 82. jobs3.txt๋ฅผ ์ด๊ณ ๋งจ์ ํ์ค์ ๋ณต์ฌํ ํ ๋ค์๋ผ์ธ์ ๋ถ์ฌ๋ฃ๊ธฐ
yy
->p
/๊ฒ์์ด
: ๊ฒ์์ด๋ฅผ ์ฐพ์์ค๋ค (/์ ๊ฒ์์ด์ฌ์ด์ ๊ณต๋ฐฑ์์ผ๋ฉด ์๋จ)n
์ ๋๋ฅด๋ฉด์ ์ ์งํ๋ฉด์ ๊ฒ์์ด๋ฅผ ์ฐพ์ ์ ์๋ค. shiht + n
์ ๋๋ฅด๋ฉด ํ์งํ๋ฉด์ ๊ฒ์์ด๋ฅผ ์ฐพ์ ์ ์๋ค.๋ฌธ์ 83. enp.csv๋ฅผ ์ด์ด์ SCOTT์ด๋ผ๋ ๋ฌธ์๊ฐ ์๋์ง ๊ฒ์
/SCOTT
๋ฌธ์ 84. jobs.txt๋ฅผ ์ด์ด์ about ์ด๋ผ๋ ๋จ์ด ๊ฒ์
/about
<๋ฌธ๋ฒ>
:%s/๊ธฐ์กด๋ฌธ์/๋ณ๊ฒฝํ ๋ฌธ์/g
๋ฌธ์ 85. emp.csv์์ KING์ aaa๋ก ๋ณ๊ฒฝ
:%s/KING/aaa/g
๋ฌธ์ 86. jobs.txt๋ฅผ ์ด์ด์ about ์ด๋ผ๋ ๋จ์ด๋ฅผ ๋ชจ๋ kkkkk๋ก ๋ณ๊ฒฝํ๊ธฐ
:%s/about/kkkkk/g
๋ฌธ์ 87. emp.csv๋ฅผ emp1.csv ~ emp20.csv๋ก ๋ณต์ฌํ๊ธฐ
์ฐธ๊ณ
๋ฌธ์ 88. ํ์ด์ฌ์ผ๋ก emp21.csv ~ emp.40csv๊น์ง ์์ฑ๋๊ฒ ํ๊ธฐ
$ vi p.py
์ ์ฅํ์python p.py
์คํ ํ์ls -l emp*.csv
ํด๋ณธ๋ค. ์๋์ฒ๋ผ ์์ฑ๋๊ฒ ๋ณด์!
๋ฌธ์ 89. emp1.csv ~ emp.40csv ์ ๋ด์ฉ์ค์์ SALESMAN์ jjj๋ก ๋ณ๊ฒฝํ๊ธฐ
-> ๋ฌธ์ ์ ์ ํ๋์ฉ ์ด์ด์ ์์ ํด์ค์ผํ๋ค.. ?
$ vi emp*.csv
:argdo %s/SALESMAN/jjj/g | update
๋ฌธ์ 90. emp1.csv ~ emp.40csv ์ ๋ด์ฉ์ค์์ jjj๋ฅผ ๋ค์ SALESMAN์ผ๋ก ์์๋ณต๊ท ํ๊ธฐ
$ vi emp*.csv
:argdo %s/jjj/SALESMAN/g | update
โ๏ธ ์(shell) ์ด๋ ๋ฌด์์ธ๊ฐ?
shell์ด๋ ๋ฆฌ๋
์ค ์ด์์ฒด์ ์์ ์ ๊ณตํ๋ ๋ช
๋ น์ ์คํํ๋ ํ๋ก๊ทธ๋จ์
๋๋ค.
โ๏ธ ์(shell) ์คํฌ๋ฆฝํธ๋?
์ธํฐํ๋ฆฌํฐ(ํต์ญ์ฌ) ์ญํ ์ ํ๋ ๊ฒ์ผ๋ก ์์คํ
์์ ์ง์ํ๋ ๋ช
๋ น์ด๋ค์ ์งํฉ์ ๋ฌถ์ด์ ํ๋ก๊ทธ๋จํ ํ ๊ฒ์ ๋งํฉ๋๋ค.
โ๏ธ ์(shell) ์ ์ข
๋ฅ 4๊ฐ์ง
1. Boune Shell
2. C Shell
3. Korn Shell
4. bash Shell
: ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์.
์ ์คํฌ๋ฆฝํธ ์์ฑ์, ๋งจ ์์๋ค๊ฐ ์ง๊ธ๋ถํฐ ์์ฑํ๋ shell ์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ์ bash shell ์ ๋๋ค. ๋ผ๊ณ ๋ช ์ํ๊ณ ํ๋ก๊ทธ๋๋ฐ์ ํฉ๋๋ค.
#!/bin/bash ------------> ์ ์ค์์ bash์์ ์ฐ๊ฒ ๋ค.
โ๐ป ์ ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ์ด๋?
1. c ์ธ์ด์ ์ ์ฌํ ํ๋ก๊ทธ๋๋ฐ
2. ๋ณ์, ๋ฐ๋ณต๋ฌธ(loop๋ฌธ), ์ ์ด๋ฌธ(if๋ฌธ)์ด ์ฌ์ฉ๊ฐ๋ฅ
3. ๋ณ๋๋ก ์ปดํ์ผ ํ์ง ์๊ณ ํ
์คํธ ํ์ผ ํํ๋ก ๋ฐ๋ก ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
4. ๋ฆฌ๋
์ค์ ๋ง์ ๋ถ๋ถ์ด ์ ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋์ด์ ธ ์์ต๋๋ค.
โ๐ป์์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ์คํํ๋ ๋ฐฉ๋ฒ
$ vi a100.sh
#!/bin/bash
echo "yaho~~"
$ sh. a100.sh
โ๐ป ๋ณ์ ์ฌ์ฉ๋ฒ
1. ๋ชจ๋ ๋ณ์๋ ๋ฌธ์์ด(string)๋ก ์ทจ๊ธ๋ฉ๋๋ค.
2. ๋ณ์ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
3. ๋ณ์์ ๊ฐ์ ๋์
ํ ๋๋ '=' ์ข์ฐ์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํฉ๋๋ค.
ex) a=1
ex)
$ a="hi~~~"
echo $a
โ๐ป ๋ณ์์ ์ซ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ
1. ๋ณ์์ ๋์
ํ ๊ฐ์ ๋ชจ๋ ๋ฌธ์์ด๋ก ์ทจ๊ธ์ด ๋ฉ๋๋ค.
2. ๋ณ์์ ๋ค์ด์๋ ๊ฐ์ ์ซ์๋ก ํด์ ์ฌ์น์ฐ์ฐ์ ํ๋ ค๋ฉด, expr
์ ์ฌ์ฉํด์ผ ํ๋ค.
3. ์์์ ๊ดํธ ๋๋ ๊ณฑํ๊ธฐ(*)๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, ๊ทธ ์์ ๋ฐ๋์ ์ญ์ฌ๋์ฌ(\)
๋ฅผ ๋ถ์ฌ์ผ ํฉ๋๋ค.
์์
$ num1=100 $ num2=200 $ echo $num1 $ echo $num2 $ echo $num1 + $num2 $ expr $num1 + $num2
โ expr ์ ์จ์ผ 300์ด ๋์จ๋ค.
๋ฌธ์ 91. ์์ num1, num2 ์ ๊ณฑ์ ๊ตฌํ์์ค
[orcl:~]$ expr $num1 \* $num2 20000
โ ๊ณฑํ๊ธฐ์ ๊ดํธ ์์๋,
\
๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
๋ฌธ์ 92. ์๋์ ๊ณ์ฐ์์ ๊ตฌํํ์ธ์.
($num2 + 200) * $num1
\($num2 + 200\) \* $num1
ํ๋ผ๋ฏธํฐ ๋ณ์
1. ํ๋ผ๋ฏธํฐ ๋ณ์๋ $0, $1, $2, ...์ ํใ
ํ๋ฅผ ๊ฐ์ง๋๋ค.
2. ์ ์ฒด ํ๋ผ๋ฏธํฐ๋ $*๋ก ํํํฉ๋๋ค.
์์
$ vi add.sh ์ด๊ณ , ์์ ๋ณ์ํ ๋นํ๊ณ echo ์จ์ค๋ค.
[orcl:~]$ sh add.sh 24 18 ๋ผ๊ณ ์ฐ๋ฉด ( 24, 18์ ๋ํ ๊ฐ์ ์ผ๋ค. )
24 + 18 = 42
โ
๋ฐฑํฑ์ ์จ์ผ ๊ทธ ์์ ์คํ๋ฌธ์ด ์คํ๋์ด์ num3๋ณ์์ ํ ๋น์ด ๋๋ค.
๋ณ์ = `๋ฆฌ๋
์ค ๋ช
๋ น์ด`
๋ฌธ์ 93. ์๋์ ๋ ์๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ ์ ์คํฌ๋ฆฝํธ ์์ฑํ๊ธฐ
$ sh two_nnumber.sh 12 54
true
true
-eq
์ซ์2 : ๋ ์ซ์๊ฐ ๊ฐ์ผ๋ฉด true
(=)-ne
์ซ์2 : ๋ ์ซ์๊ฐ ๊ฐ์ง ์์ผ๋ฉด true
(!=)-gt
์ซ์2 : ์ซ์1์ด ์ซ์2๋ณด๋ค ํฌ๋ค๋ฉด true
(>)-ge
์ซ์2 : ์ซ์1์ด ์ซ์2๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด true
(>=)-lt
์ซ์2 : ์ซ์1์ด ์ซ์2๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด true
(<=)-le
์ซ์2 : ์ซ์1์ด ์ซ์2๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด true
(<=)!
์ซ์1 : ์ซ์1์ด ์๋๋ผ๋ฉด true
(not)
์์
$ vi if1.shif [100 -eq 200 ]; then echo "100๊ณผ 200์ ๊ฐ์ต๋๋ค." else echo "100๊ณผ 200์ ๊ฐ์ง ์์ต๋๋ค." fi
fi๋ if๋ฌธ ์ข ๋ฃ
๋ฌธ์ 94. ์ ์คํฌ๋ฆฝํธ์ ํ๋ผ๋ฏธํฐ ๋ณ์๋ฅผ ์ด์ฉํด์ ์๋์ ๊ฐ์ด ์คํ๋ ์ ์๋๋ก ํ์์ค.
$ sh if1.sh 100 200
-> 100๊ณผ 200์ ๊ฐ์ง ์์ต๋๋ค.
$ sh if1.sh 100 100
-> 100๊ณผ 100์ ๊ฐ์ต๋๋ค.
์์
$ vi if2.shif [100 -lt 200 ]; then echo "100์ 200๋ณด๋ค ์์ต๋๋ค." elif [100 -gt 200 ]; then echo "100์ 200๋ณด๋ค ํฝ๋๋ค." else echo "100๊ณผ 200์ ๊ฐ์ต๋๋ค." fi
-> ๋๊ดํธ ์ ๊ณต๋ฐฑ ์ ๋๋ก ์์คฌ์์.
์์
if [ $sal -lt 2000 ] && [ $job=="SALESMAN" ]; then // ๋๊ดํธ ๋ฐ๋ก์ผ์ ๋
๋๋
if [ $sal -lt 2000 -a $job=="SALESMAN" ]; then // ๋๊ดํธ ํ๋ฒ์ ์ธ ๋
๋ฌธ์ 96. emp.csv์์ SCOTT์ ์๊ธ์ ์ถ๋ ฅํ์ธ์.
[orcl:~]$ awk -F ',' '$2=="SCOTT" {print $6}' emp.csv
3000
๋ฌธ์ 97. ์ ์คํฌ๋ฆฝํธ์ ํ๋ผ๋ฏธํฐ ๋ณ์๋ฅผ ์ด์ฉํด์, ๋ค์๊ณผ ๊ฐ์ด ์คํ๋๊ฒ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ธ์.
sh find_sal.sh SCOTT
awk -F ',' -v name=$1 '$2==toupper(name) {print $6}' emp.csv
๋ฌธ์ 98. (์ค๋์ ๋ง์ง๋ง ๋ฌธ์ ) ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํด์ ์๋์ ๊ฐ์ด ์คํ๋๋ ์ ์คํฌ๋ฆฝํธ ์์ฑํ์ธ์
$ sh find_job.sh scott
ANALYSTawk -F ',' -v name=$1 '$2==toupper(name) {print $3}' emp.csv