Академический Документы
Профессиональный Документы
Культура Документы
Apache ,
Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.
Apache .
,
,
. . IPv6.
2.1
2.2
2.3 (MPM)
2.4
2.5
3.1
3.2
3.3
3.4
4 .
1995 , a
patchy (. ),
NCSA HTTPd 1.3. , 2.
NCSA, . 2.2,
1.3 2.0 .
- Apache
Apache Software Foundation ,
Oracle IBM WebSphere.
1996 HTTP- .
[3]
[4]
- Apache, 59 % -.
- , . .
Apache ,
, HTTP . ( )
Apache Software Foundation, .
, apache , .
, .
Apache C.
Apache .
:
(httpd.conf).
(.htaccess).
, .
,
MPM. .
( /etc/passwd /etc/hosts).
, .
(MPM)
- Apache .
:
worker
Apache
Software
Foundation
OS
Linux, FreeBSD
-.
,
pre-fork
Apache
Software
Foundation
perchild
Apache
Software
Foundation
netware
Apache
Software
Foundation
winnt
Apache
Software
Foundation
ApacheITK
peruser
Steinar H.
Gunderson
Sean Gabriel
Heacock
MPM,
threads.
threads.
Linux
,
,
.
Novell NetWare
NetWare.
Novell
NetWare
Microsoft
Windows
Windows .
Microsoft
Server.
Windows.
Linux, FreeBSD
MPM,
prefork.
uid gid.
,
,
.
.
Linux, FreeBSD
,
MPM perchild.
uid gid.
.
,
,
threads.
Linux, FreeBSD
4 2007
,
10
2009
.
[6]
-, ISPmanager VDSmanager
Apache.
Apache .
IP- ( ),
.
,
. MPM, Apache-ITK
httpd uid guid.
, ,
(CPU, RAM, ) .
, Apache
.
:
PHP (mod_php).
Ruby (apache-ruby).
ASP (apache-asp).
[7]
Apache .
:
HTTP-
(mod_auth_basic) digest- (mod_auth_digest).
, IP .
,
.
, PAM.
MPM- Apache
uid gid .
, suexec, CGI-
.
,
SSL, OpenSSL. X.509.
, mod_security.
2.0 .
, ,
SSI .
,
. Apache , Unicode,
, .
HTTP
, 404 (Not Found) 403 (Forbidden).
.
... .
USER - .
TERM - .
vi .
SHELL - , .
: ,
echo c $. :
$ echo $USER
ravi
... USER.
... #, !, .
.
2) , .
:
$ chmod ugo+x your_shell_script.sh
3) .sh. ,
.
'if'
:
if condition_is_true
then
execute commands
else
execute commands
fi
if . ,
.
if condition_is_true
then
execute commands
elif another_condition_is_true
then
execute commands
else
execute commands
fi
if - test , .
:
-eq
-le
- - - - - - True
.
-f file
True file
-r file
True file
-w file
True file
-x file
True file
-d file
True file
-s file
True
-n str
-z str
str1 == str2
True
str1 != str2
True
str
True, str
null
.
-a AND
-o OR
:
test $d -eq 25 ; echo $d
... , d 25, .
test $s -lt 50; do_something
if [ $d -eq 25 ]
then
echo $d
fi
, test -
.
if [ $str1 == $str2 ]
then
do something
fi
if [ -n "$str1" -a -n "$str2" ]
then
echo 'Both $str1 and $str2 are not null'
fi
case Case .
:
case expression in
pattern1) execute commands ;;
pattern2) execute commands ;;
...
esac
: ;; , , .
:
case `date |cut -d" " -f1` in
Mon) commands ;;
Tue) commands ;;
Wed) commands ;;
...
esac
Case .
wild-cards .
...
echo "Do you wish to continue? (y/n)"
read ans
case $ans in
Y|y) ;;
[Yy][Ee][Ss]) ;;
N|n) exit ;;
[Nn][Oo]) exit ;;
*) echo "Invalid command"
esac
while
:
while condition_is_true
do
execute commands
done
:
while [ $num -gt 100 ]
do
sleep 5
done
while :
do
execute some commands
done
. ' '
':'. looping .
. - . -
.
until
. :
until false
do
execute commands
done
:
...
until [ -r myfile ]
do
sleep 5
done
, myfile .
for
:
for variable in list
do
execute commands
done
:
...
for x in 1 2 3 4 5
do
1 5. :
for var in $PATH $MAIL $HOME
do
echo $var
done
, java .
, :
...
for file in *.java
do
javac $file
done
: wild-card .
, (positional parameters).
.
my_script.sh. :
$ ./my_script.sh linux is a robust OS
... , 5 . ,
: $ * - "linux ',' ',' ',' ',' OS".
$ 0 - my_script.sh - . $ # - $ $ - $ 1 - $ 2 - $* -
'linux','is','a','robust','OS'.
$0 - my_script.sh - .
$# - 5 - .br>
$$ - ID .
- , .
$1 - 'linux'
$2 - 'is'
... . set shift
set - .
, :
$ set `date`
$ echo $1
$ echo $*
$ echo $#
$ echo $2
shift :
$ set `date`
$ echo $1 $2 $3
$ shift
$ echo $1 $2 $3
$ shift
$ echo $1 $2 $3
ID , :
$ echo $$
2667
, , :
$ ps -f |grep bash
read
. read ,
. , . id
, .
:
#!/bin/sh
echo "Enter your name : "
read name
echo "Hello $name , Have a nice day."
shell script
shell, ASPLinux, , shell
script. , shell: Bourne shell shell,
, .
, C shell, C. ,
. Bourne shell
.
Linux shell script? ,
.
UNIX ,
.
. , ,
. - ,
, , . shell script
, , .
, (
shell script, Linux ,
.
shell script , .
, , .
shell ,
.
, Bourne shell, ..
ASPLinux.
:
, :
#! ///
, shell script , .
, .
Linux Bourn shell bash,
:
#! /bin/bash
, shell script,
. ,
, .
:
. program
, . ..
. ,
exit .
* /root/bin ,
shell script. ,
.
shell script, .
.
, .
. ,
.
shell script " " .
, . ,
.
* bash 2 local.
Bourne shell.
. ,
. .
sample01 .
1
2
3
4
5
6
#!/bin/bash
CAR="porshe the best"
echo "CAR:"
echo CAR
echo '$CAR: '
echo $CAR
1 , .
( ),
"" ( 2). ,
.
echo $CAR
3, CAR:
4, CAR
5 . shell script
, . . . $
$CAR:
shell script . Bourne
shell , 1024 . bash .
sample02 .
1 #!/bin/bash
2 #
3 #CAR[0]=porsh
4 #CAR[1]=bmw
5 #CAR[2]=mers
6 #CAR[3]=zaporozets
7 #CAR[10]=LADA
8 #CAR=([0]=porsh [1]=bmw [2]=mers [5]=zaporozets [10]=LADA)
9 CAR=(porsh bmw mers zaporozets LADA)
10 echo "*********************************"
11 echo "CAR[0]=${CAR[0]}"
12 echo "CAR[1]=${CAR[1]}"
13 echo "CAR[2]=${CAR[2]}"
14 echo "CAR[3]=${CAR[3]}"
15 echo "CAR[4]=${CAR[4]}"
16 echo "*********************************"
17 echo "ALL ${CAR[*]}"
18 echo "UHO ${CAR[@]}"
19 echo "*********************************"
bash .
.
( 3 7) .
.
CAR[1]=bmw
: 0 1 2 3 10.
, .
8.
${CAR[0]}
* . .
: 17 18, . ,
@, *.
${CAR[*]}
${CAR[@]}
, shell script, ,
, .
sample03 .
1
2
3
4
5
6
7
#!/bin/bash
#PATH=$PATH:~/bin; export PATH
#export PATH=$PATH:~/bin
echo "Workdir=$PWD"
echo " UID=$UID"
echo "Bash level= $SHLVL"
echo "Random=$RANDOM"
Bourne shell
, . export
( 2).
PATH=$PATH:~/bin
export PATH
bash ( 3).
export PATH=$PATH:~/bin
,
. .
env.
unset. :
unset CAR
shell . .
.
, shell script , ,
read.
read [ ...]
read,
. "Enter".
sample04 .
1
2
3
4
5
6
#!/bin/bash
#REPLY test
#echo "Write a car name and press \"Enter\" :"
echo -n 'Write a car name and press "Enter" :'
read
echo " $REPLY"
read .
echo. echo -n,
. 3 .
4- . ,
, ,
Enter.
5. read , , ,
REPLAY.
6- .
shell script ,
.
,
`date`
$
$(date)
, , ,
. , .. .
sample05 .
1 #!/bin/bash
2 #
3 echo "**************************************"
4 DATE=`date`
5 echo "DATE=$DATE"
6 echo "**************************************"
7 USERS=`who | wc -l`
8 echo "USERS v sisteme=$USERS"
9 echo "**************************************"
10 UP=`date; uptime`
11 echo "Sostavnie=$UP"
12 echo "**************************************"
13 exit 0
4 DATE , date . 5-
.
( 7). ,
wc .
10 . UP ,
date uptime .
, , . ,
,
.
"+", "-", "*", "/" .
"++" "--".
,
$.
$(( 2*2 ))
.
. ,
.
sample06 .
1
2
3
4
5
#!/bin/bash
#
PERM=2
echo "2*2=$(( 2*$PERM ))"
echo "((2*3+5)-4)/2=$(( ((2*3+5)-4)/2 ))"
1
2
3
4
5
6
7
8
#!/bin/bash
# if then else
if rm test 2> /dev/null
then
echo "Deleted"
else
echo "Not deleted"
fi
3 rm. ,
rm (rm test 2> /dev/null). test,
. - ,
. , ..
/dev/null.
0 5. 7.
if , ,
test. If test.
sample08 , ,
test ( 3).
1
2
3
4
#!/bin/bash
# if then else test
if [ -w $HOME/bin -a -w $HOME/bin/test ]
then
5
rm $HOME/bin/test
6
echo "test deleted"
7 else
8
echo "test not deleted"
9 fi
* "[" "]". .
test :
(AND) (OR)
1 - 2 , 1,
2.
1 - 2 , 1,
2.
! .
:
1
1
1
1
1
1
-eq
-ne
-gt
-ge
-lt
-le
2
2
2
2
2
2
,
,
,
,
,
,
"=".
"!=".
">".
">=".
"<".
"<=".
-n ,
-z ,
1 = 2
.
, 1 2.
.
-e
-f
-d
-L
-r
-w
-x
-s
///
///
///
///
///
///
///
///
,
,
,
,
,
,
,
,
.
.
.
.
.
.
.
, . ,
, , .. rm.
1 #!/bin/bash
2 # case esac
3 case $TERM in
4
*term)
5
echo "May be xterm?!"
6
;;
7
unknown|vt[0-9]*)
8
echo "May be vt100 ?"
9
;;
10
linux)
11
echo " This is a LINUX terminal!!!"
12
;;
13
*)
14
echo "I don't know this terminal :("
15 esac
16 exit 0
3 case , TERM.
4 "*term)".
, , . ,
term. , 5.
, .
7 "|".
, unknown vt .
, 8. , .
10 , linux. ,
11. , .
( 13),
"*", default .
sample10,
case .
1 #!/bin/bash
2 # case esac
3 echo -n "Please enter [Y|yes] : "
4 read YN
5 case $YN in
6
[yY]|[yY][eE][sS])
7
echo "You entered $YN"
8
;;
9
*)
10
echo "You did not enter [Y|yes]"
11 esac
12 exit 0
1
2
3
4
5
6
7
#!/bin/bash
# for
for I in 1 2 3 4 5 6 7 8 9 10
do
echo "--> $I <--"
done
exit 0
I "1 2 3 4 5 6 7 8 9 10".
10 .
.
, , Enter, "\"
. :
1 #!/bin/bash
2 # for
3 # html
4 #for FILES in `ls ~/.bash_*`
5 for FILES in ~/.bash_*
6 do
7
echo "" > ${FILES}.html
8
echo "" >> ${FILES}.html
9
echo "
" >> ${FILES}.html
10
cat ${FILES} >> ${FILES}.html
11
echo "
" >> ${FILES}.html
12
chmod a+r ${FILES}.html
13 done
14 exit 0
5 "~/.bash_*". , FILES
, , ".bash_".
: .bash_profile, .bash_logout .bash_history. .. ,
FILES .
9- 11- , ".html".
.
".html".
shell script
. . sample13.
.
, ,
. , firewall IP
, . , ,
:
1
2
3
4
5
192.168.0.1
192.168.0.2
#192.168.0.3
192.168.0.4 # not pay
192.168.0.5
( 3 4).
sample13 , :
1
2
3
4
5
6
7
#!/bin/bash
#
for I in `cat ./sample13-data`
do
echo "--> $I"
done
exit 0
for. ,
"cat ./sample13-data". IP ,
, .
,
. sample13-2:
1
2
3
4
5
6
7
#!/bin/bash
#
for I in `cat ./sample13-data | cut -f1 -d ' ' | sed -e '/#/ d'`
do
echo "--> $I"
done
exit 0
, , "#".
while , do done, ,
break.
while sample14:
1
2
3
4
5
6
7
8
9
#!/bin/bash
# Primer while
X=1
while [ $X -lt 10 ]
do
echo "--> $X <--"
X=$(( $X+1 ))
done
exit 0
1 #!/bin/bash
2 # select
3 select FILE in ~/.b* QUIT
4 do
5
if [ -e $FILE ]
6
then
7
ls -l $FILE
8
else
9
break
10
fi
11 done
12 exit 0
select . ,
, ".b" QUIT.
, "Enter". FILE
, , do done.
5 : " ?". .
, ls ( 7). ,
. ,
QUIT, break ( 9) select.
"." shell script, .
"." include .
shell script ,
.
"." ,
. , :
PARAM=value
PARAM2=value2
, ,
. .
. file
echo $PARAM
echo $PARAM2
sample16 ".".
1 #!/bin/bash
2 # "."
3 if [ ! -x $HOME/bin/sample16-2 ]; then
4
exit 1
5 fi
6 . $HOME/bin/sample16-2
7 select FILE in ~/.* QUIT
8 do
9
if [ -f $FILE ]
10
then
11
any
12
else
13
break
14
fi
15 done
16 exit 0
, sample15,
.
3 sample16-2, ,
6. , exit, 1,
, .
sample16-2 :
1
2
3
4
5
6
7
#!/bin/bash
#
# function
any()
{
ls -l $FILE
}
$0
$0
$1
$2
$#
$*
$1 ... $9 .
..
, .
$@ .
"$*" "$@". ,
:
for I in $* # .
for I in $@ # .
for I in "$@" # .
, "$@",
.
.
$? .
$! PID , background .
$$ PID shell, shell script.
sample17:
1 #!/bin/bash
2 # Primer ispolzovanija $0
3 case $0 in
4
*listtar)
5
echo "List archive $1 ..."
6
TARGS="-tvf $1"
7
;;
8
*maketar)
9
echo "Create archive $1.tar ..."
10
TARGS="-cvf $1.tar $1"
11
;;
12
*) echo "Usage: listtar file | maketar dir"
13 exit 88
14 esac
15 tar $TARGS
16 exit 0
UNIX .
, ,
. . ,
. ( )
.
shell script , .
"$0". 3 case ,
. : listtar ( 4) maketar ( 8).
( "$0" ),
"*".
tar . , listtar,
. "$1". 5,
"List archive $1 ...", "$1" . 6
TARGS , tar.
15.
maketar, . .
$1. 9 .
10- , tar.
15- .
- , ( 12).
88 ( 13).
* .
, , : listtar maketar.
. sample17, .
bash shell script.
, "" .
${VAR#$PATTERN} .
${VAR##$PATTERN} ,
.
${VAR%$PATTERN} .
${VAR%%$PATTERN} ,
.
, , sample18.
1 #!/bin/bash
2 VAR=abcd12345abc6789
3 PATTERN=a*c
4 echo "*****************************************"
5 echo "VAR = $VAR"; echo "PATTERN = $PATTERN"
6 echo '${VAR#$PATTERN} =' "${VAR#$PATTERN}"
7 echo '${VAR##$PATTERN} =' "${VAR##$PATTERN}"
8 echo "*****************************************"
9 PATTERN2=b*9
10 echo "VAR = $VAR"; echo "PATTERN2 = $PATTERN2"
11 echo '${VAR%$PATTERN2} =' "${VAR%$PATTERN2}"
12 echo '${VAR%%$PATTERN2} =' "${VAR%%$PATTERN2}"
13 echo "*****************************************"
VAR ,
. PATTERN ( 3).
6 "${VAR#$PATTERN}". "abcd12345abc6789"
, "a" "" (
). : "d12345abc6789".
7 "${VAR##$PATTERN}". ,
, , ""
"". : "6789".
9 "b*9".
11 "${VAR%$PATTERN}".
, "9" "b".
, . : "abcd12345a".
12 "${VAR%%$PATTERN}".
, , "9" "b".
: "".
sample19:
1 #!/bin/bash
2 ARGS=2
3 if [ $# -ne $ARGS ]; then
4
echo "Usage: `basename $0` old_suffix new_suffix"
5
exit 65
6 fi
7 for FILENAME in *.$1
8 do
9
echo " $FILENAME ${FILENAME%$1}$2 ..."
10
mv $FILENAME ${FILENAME%$1}$2
11 done
12 exit 0
.
:
. 3 .
2, ( 4) 65 ( 5).
, for,
, ,
$1 ( 7).
"${FILENAME%$1}$2" . ,
bin.tar, newtar. ,
:
bin.tarnewtar
getopts shell , , .
, POSIX, . "-v -t -f file" ..
":" , .
sample20.
1 #!/bin/bash
2 while getopts f:o:v OPTION
3 do
4 case $OPTION in
5
f) echo "Option f argument $OPTARG" ;;
6
o) echo "Option o argument $OPTARG" ;;
7
v) echo "Option v no argument" ;;
8
\?) echo "Usage: `basename $0` -f infile [-o outfile] [-v]"
9 esac
10 done
11 exit 0
getopts while. ,
, OPTION .
while, getopts.
, . ,
while.
, getopts
OPTARG.
getopts :
, stderr,
OPTION "?".
trap .
, .
. , .
trap sample21:
1 #!/bin/bash
2 trap clean 1
3 clean() {
4
X=1
5
echo "Start clean :"
6
while [ $X -lt 10 ]
7
do
8
9
10
11
12
13
14
15
16
17
18
19
echo -n ".."
sleep 2
X=$(( $X+1 ))
done
echo "Done"
exit 0
}
while [ 0 ]
do
:
done
exit 0
2 trap, , 1
clean.
while ( 15-18),
. . while do done
-
,
":".
clean "Start clean :", ( sleep,
9) "..". exit ( 13),
.