Professional Documents
Culture Documents
Mc lc
Bi 1
1.1.
1.2.
1.3.
Bi 2
S DNG E-Mail
2.1.
2.2.
2.3.
Gi th bng sendmail................................................................................. 4
Nhn th ...................................................................................................... 4
Cc thao tc h tr....................................................................................... 4
Bi 3
3.1.
T chc h thng tp tin trn Linux ............................................................ 6
3.2.
Cc lnh thao tc trn h thng tp tin ........................................................ 6
3.2.1.
To mi th mc................................................................................. 6
3.2.2.
Thay i th mc hin hnh ............................................................... 7
3.2.3.
Xem th mc lm vic hin hnh ....................................................... 7
3.2.4.
Xem thng tin v tp tin v th mc................................................... 7
3.2.5.
Di chuyn mt hay nhiu tp tin ......................................................... 7
3.2.6.
Sao chp tp tin................................................................................... 8
3.2.7.
To lin kt vi tp tin ........................................................................ 8
3.2.8.
Tm kim mt tp tin .......................................................................... 8
3.2.9.
Xo th mc rng ............................................................................... 9
3.2.10.
Xa cc tp tin hoc th mc.............................................................. 9
3.2.11.
Xem hng dn s dng lnh ............................................................. 9
3.2.12.
Hin th ni ca cc tp tin ................................................................. 9
3.2.13.
Ni cc tp tin ..................................................................................... 9
3.2.14.
Xut ni dung thng bo................................................................... 10
3.2.15.
Nn v gii nn tp tin ...................................................................... 10
3.3.
Cc lnh h thng ...................................................................................... 10
3.3.1.
Lnh at .............................................................................................. 10
3.3.2.
Lnh hostname .................................................................................. 10
3.3.3.
Lnh ps............................................................................................. 10
3.3.4.
Lnh clear.......................................................................................... 11
3.3.5.
Lnh date........................................................................................... 11
3.3.6.
Lnh cal <month> <year> ............................................................... 11
3.3.7.
Lnh mount ....................................................................................... 11
3.3.8.
Tin ch mc ....................................................................................... 11
3.3.9.
Tin ch my tnh bc ......................................................................... 12
Bi 4
4.1.
Qun l ti khon ca h thng ................................................................. 13
4.1.1.
Ti khon ngi dng ....................................................................... 13
4.1.2.
Ti khon nhm ngi dng............................................................. 13
4.2.
Phn quyn ngi dng trn h thng tp tin............................................ 13
4.2.1.
Cc quyn truy xut trn tp tin........................................................ 13
4.2.2.
Lnh chmod ...................................................................................... 14
4.2.3.
Thay i ngi hoc nhm s hu tp tin ........................................ 14
- 2-
Bi 5
5.1.
5.2.
5.3.
5.4.
5.4.1.
Bi 6
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
Bi 7
Bi 8
LP TRNH SHELL
21
8.1.
Gii thiu................................................................................................... 26
8.1.1.
To mt tin trnh - lnh fork............................................................ 26
8.1.2.
Dng mt tin trnh........................................................................... 26
8.1.3.
Giao tip gia cc tin trnh.............................................................. 27
8.1.4.
Lin lc gia hai tin trnh ................................................................ 28
8.2.
Lp trnh a tin trnh ................................................................................ 29
8.2.1.
ng dn lin lc ................................................................................. 29
8.2.2.
Thao tc vi "ng dn lin lc"......................................................... 30
8.2.3.
Lin lc gia tin trnh cha v tin trnh con .................................... 30
Bi 9
9.1.
9.2.
Bi 10
Bi 11
Bi 12
Dch v FTP
39
CC TP TIN CU HNH MNG ............................................. 41
CU HNH DCH V DNS .......................................................... 43
12.1.
Cc tp tin cu hnh dch v DNS ........................................... 43
12.1.1.
Tp tin /etc/host.conf ........................................................................ 43
12.1.2.
Tp tin /etc/resolv.conf ..................................................................... 43
12.1.3.
Tp tin /etc/named.conf ................................................................... 43
12.1.4.
Tp tin /var/named/dng.vn.zone ....................................................... 43
12.1.5.
Tp tin /var/named/edu.vn.zone........................................................ 44
12.1.6.
Tp tin /var/named/0.0.127.in-addr.arpa.zone .................................. 44
12.1.7.
Tp tin /var/named/localhost.zone ................................................... 44
12.1.8.
Lnh khi ng dch v DNS ........................................................... 44
12.2.
Cc lnh v tin ch h tr ........................................................... 45
12.2.1.
Lnh nslookup................................................................................... 45
12.2.2.
Lnh host........................................................................................... 45
12.2.3.
Lnh dig ............................................................................................ 45
12.2.4.
Tin ch redhat-config-bind .............................................................. 45
- 3-
Bi 1
1.1.
Ngi dng nhp vo username v password tng ng, trn mn hnh xut hin
du nhc ca h thng nh sau :
[user12@linux user12]$
1.2.
Sau mt khong thi gian thit lp lin kt, trn ca s telnet xut hin :
login :
password :
1.3.
#exit
hoc
#shutdown h now
#logout
- 4-
S DNG E-Mail
Bi 2
Th in t hin nay ang tr thnh phng tin chnh lin lc trn mng. Th
in t d s dng, tin li v nhanh chng. Trong phn ny ta s dng dch v
sendmail ca h thng Linux.
2.1.
Gi th bng sendmail
C php : mail <address1> <address2> <address3> . . .
user01 root
2.2.
Nhn th
Khi c th n, trn mn hnh xut hin thng bo :
You have mail
c th, g vo lnh :
&d
&q
2.3.
Cc thao tc h tr
filename
- 5-
Thay i ch ca th :
Xem tt c cc th lu trong hp th :
~s
$more mbox
- 6-
Bi 3
3.1.
/etc
/usr/bin
/dev
/usr/man
/usr/include
/var/log
/home
/usr/lib
3.2.
&
>
<
>>
3.2.1.
Chc nng
To mi th mc
C php :
l tn cc th mc cn to.
- 7[user01@linux
[user01@linux
[user01@linux
[user01@linux
[user01@linux
3.2.2.
user01]$
user01]$
user01]$
user01]$
user01]$
mkdir
mkdir
ls
mkdir
mkdir
document
baitap\ltc
baitap/ltc
baitap/perl
C php :
cd <directory>
<directory>
l th mc mun chuyn n.
3.2.3.
C php :
pwd
3.2.4.
C php :
ls
<Tham s> :
-F : dng hin th mt vi thng tin v kiu ca tp tin
-l : (long) lit k kch thc tp tin, ngi to ra, cc quyn ngi s dng.
[user12@linux user12]$ ls -lF
total 75
drwxrwxr-x 2 user12
user12
drwxrwxr-x 2 user12
user12
-rwxrwxr-x
1 user12
user12
-rw-rw-r-1 user12
user12
-rw-rw-r-1 user12
user12
[user12@linux user12]$
ls lF
ls *a*
ls F*E
3.2.5.
C php :
mv
- 8<file1> . . . <fileN>
<destination>
Di chuyn th mc
[user01@linux user01]$ mkdir ctrinh
[user01@linux user01]$ ls lF
[user01@linux user01]$ mv ctrinh baitap
C php :
cp <source> <destination>
3.2.7.
directory
To lin kt vi tp tin
ls -l
ln
<source> <destination>
3.2.8.
user01]$
user01]$
user01]$
user01]$
user01]$
user01]$
pwd
ls -l
ls -l baitap
ln baitap/file1
ls -l baitap
ls -l file.link
file.link
Tm kim mt tp tin
Lnh find cho php tm kim mt hay nhiu tp tin trong mt cy danh mc.
Tm theo tn:
Tm theo tn ngi s hu :
find
find
<path> -name
<filename>
-name
filename
2>/dev/null
V d:
$ pwd
/home/user01
$ find / -name ttyc2d1 - print 2>/dev/null
/dev/ttyc2d1
$ ls -i /unix
2810 - r- xr- - r- - 2 bin bin 508516 Mar
$find / -inum 2810 - print 2>/dev/null
3.2.9.
10 1989
/unix
Xo th mc rng
C php :
rmdir /home/baitap
xa th mc
l tn nhng th mc cn xa.
/home/baitap
Trong
man <command>
<command> --help
<command> /?
<command>
3.2.13. Ni cc tp tin
C php : cat <file1> <file2> ... <fileN> [>filename]
V d:
Hin th ni dung th mc
-> vanban.txt.gz
gunzip <filename>
gzip -d <filename>
3.3.
3.3.1.
Cc lnh h thng
Lnh at
3.3.2.
Lnh hostname
3.3.3.
Lnh ps
3.3.4.
Lnh clear
Xa mn hnh.
3.3.5.
Lnh date
Lnh mount
C php :
type
: Kiu tp tin
device
mountpoint
To kt ni vi a logic 1
To kt ni vi a mm MS-DOS:
#mount /dev/hda1
/mnt/hdisk
#mount /dev/fd0
/mnt/floppy
#mount /dev/hda1
Hy kt ni vi a mm
#umount /dev/fd0
/dev/fd0
/mnt/floppy
/mnt/cdrom
Tin ch mc
- 123.3.9.
Tin ch my tnh bc
Chng trnh bc cung cp mt b my tnh tay gip ngi dng c th tnh ton
cc biu thc, cc hm ton hc ...
3.3.9.1. Khi ng bc
T du nhc h thng, bn g :
#bc
nh dng c s u vo
obase=cs
nh dng c s xut ra
3.3.9.2. Kt thc bc
Nhn CTRL-D thot.
#man bc
- 13-
Bi 4
4.1.
4.1.1.
username
: tn ngi s dng
password
: mt khu (nu c)
uid
gid
comment
: ch thch
groupname
: tn ca nhm
gid
4.2.
4.2.1.
rwx
suid
owner
Trong :
rwx
sgid
group
rwx
other
- 14r
Quyn thc thi tp tin. Quyn truy xut qua li trn th mc.
Lnh chmod
Lnh chmod cho php thay i quyn trn tp tin ca ngi dng. Ch nhng
ngi s hu tp tin ny mi c th thay i c mc c quyn i vi tp tin ny.
C th thc hin lnh theo hai cch:
4.2.2.1. Dng cc k hiu tng trng:
C php :
chmod
<mode>
<filename>
4.2.3.
r - 100
4
Lnh chown cho php thay i ngi s hu, nhm s hu trn tp tin.
- 15-
THC HNH
1. Thay i quyn trn tp tin
#cat bai1.sh
#ls -lF bai1.sh
#chmod u+x,g+wx bai1.sh
#ls -lF bai1.sh
#chmod 644 bai1.sh
#ls -lF bai1.sh
#chmod 764 bai1.sh
#ls -lF bai1.sh
#chmod 777 bai1.sh
#ls -lF bai1.sh
2. To ti khon h thng
To nhm cntt2004
#groupadd cntt2004
c. To th mc /home/common
#mkdir /home/common
hoc
#chgrp cntt2004 /home/common
- 17-
Bi 5
Gii thiu trnh son tho vi, cc thao tc son tho tp tin bng vi.
5.1.
Gii thiu
Ch lnh
(Command mode)
Ch son tho
(Editor mode)
Nhn ESC + Phm lnh
5.2.
Khi ng vi
Ta c th gi vi vi tn tp tin vn bn :
V d :
vi bai1.txt
$ vi
filename
<Enter>
Dng di cng cho bit tn file ang m, trng thi ca file: nu l file mi th
"[new file]", nu m file c th s hin th s dng, s k t trong file (hnh
di).
5.3.
Son tho vn bn
- 18-
5.4.
Thot khi vi
Mun ra khi vi v ghi li ni dung tp tin, bn nhn phm ESC v dng mt trong
cc lnh nh sau:
:ZZ
hoc :wq hoc :x
Thot khi vi v khng ghi li cc thay i trc
: q!
Khi trong ch son tho ca vi, mun chy chng trnh shell, dng lnh :
: ! <shellcommand>
hoc gi shell, sau chy cc lnh ca ngi dng, khi kt thc bm Ctrl-D tr
li vi:
: ! sh
$ <command>
$ Ctrl-D
5.4.1.
Lnh fc (fix command) cho php ta son tho bng vi v chy li cc lnh chy
ca Shell. Cch dng nh sau:
-
$fc
$ fc m n
$ fc
-l
$ fc
-lr
hoc history
(danh sch theo th t ngc li)
-nl
n1
n2
> cmd
Bng tm tt cc lnh ca vi
<i>
<I>
<a>
<A>
<o>
<O>
<d><w>
<d><d>
- 19<D>
<x>
<c><w>
<c><c>
<C>
<R>
<J>
<e>
<w>
<$>
<l>
<k>
<j>
<h>
<f><x>
<F><x>
<;>
number<|>
<H>
<L>
<M>
<G>
number<G>
<^>
<m>x
<Ctrl-d>
<Ctrl-u>
<Ctrl-f>
<Ctrl-b>
<Ctrl-l>
<Ctrl-G>
<z><z>
<y><y>
<p>
<P>
Puts contents of buffer above cursor
x[number]<yy> Yanks the indicated number of lines into the buffer named x
(x can be any single character az)
- 20x<p>
:w [file]
:q
:q!
:wq
:r file
:e file
:!command
:number
:f
/string
?string
:x,ys/oldstring/newstring
Quits vi
Quits file without saving changes
Saves changes and quits vi
Reads specified file into editor
Edits file
Executes specified shell command
Moves to specified line number
Prints out current line and filename (same as <Ctrl-G>)
Searches forward for string
Searches backward for string
Replaces oldstring with newstring from line x to line y
(entering y = $ will replace to end of file)
<ESC><u>
<n>
~
<ESC>
THC HNH
1. Dng chng trnh vi son tho tp tin vanban.doc
$vi
vanban.doc
2. Sao chp vn bn
4dd
Ctrl+d
p
Ct 4 dng v a vo vng m
Chuyn xung cui vn bn
Sao t vng m vo sau dng hin hnh
3. t v b ch hin th s dng :
:set
:set
nu
nonu
- 21-
LP TRNH SHELL
Bi 6
6.1.
Tp tin tong1.sh
#!/bin/sh
echo Chuong trinh tinh tong 1- $1
index=0
tong=0
while [ $index -lt $1 ]
do
index=$(($index + 1))
tong=$(($tong + $index))
done
echo "Tong 1-$1= $tong"
exit 0
6.2.
Tp tin giaithua.sh
#!/bin/sh
echo Chuong trinh tinh $1!
index=0
gt=1
while [ $index -lt $1 ]
do
index=$(($index + 1))
gt=$(($gt * $index))
done
echo "$1!= $gt"
exit 0
6.3.
Minh ha cc cu trc if then fi, while do done, v cch s dng [], $(()).
Tp tin demdong.sh
#!/bin/sh
echo Chuong trinh dem so dong cua tap tin $1
{
n=0
while read line
- 22do
n=$(($n + 1))
done
echo So dong cua tap tin $1 la : $n
}<$1
exit 0
6.4.
Tp tin demtu.sh
#!/bin/sh
echo Chuong trinh dem so tu cua tap tin $1
{
n=0
while read line
do
for wd in $line
do
n=$(($n + 1))
done
done
echo Tong so tu cua tap tin $1 la : $n
}<$1
exit 0
6.5.
Tp tin dongmax.sh
#!/bin/sh
echo Chuong trinh tim dong dai nhat trong tap tin $1
{
n=0
max=0
dong=
while read line
do
n=`expr length $line`
if [ $n gt $max ]
then
dong=$line
- 23fi
max=$n
done
echo Dong trong tap tin $1 co do dai max = $max la : $dong
}<$1
exit 0
6.6.
Tp tin timxau.sh
#!/bin/sh
echo Chuong trinh tim xau $1 trong tap tin $2
{
wordlen=`expr length $1`
# Do dai tu can tim
while read textline
do
textlen=`expr length $textline`
# Do dai cua dong vua doc
end=$(($textlen wordlen + 1
index=1
while [ $index le $end ]
do
temp=`expr substr $textline $index $wordlen
if [ $temp = $1 ]
then
echo Tim thay $1 tai dong $textline
break
fi
index=$(($index + 1))
done
done
}<$2
exit 0
- 24-
Bi 7
Trnh bin dch GNU l cng c pht trin thng dng nht sn c trong h iu
hnh Linux, c dng bin dch cc kernael ca h iu hnh. Ngoi ra gcc cung
cp cc th vin v cc tp tin Header cn thit bin dch v chy cc chng trnh
ca ngi dng.
Cc chng trnh C thng c phn tn m rng l .c
Cc chng trnh C++ thng c phn tn m rng l .cc cc hoc .C
bin dch v thc thi mt chng trnh C bn lm nh sau :
1. Son tho chng trnh. Lu tp tin vi tn v phn m rng thch hp.
# vi example.c
-o
gcc
hello
-o
filedestination
filesource
hello.c
3. Nu c li, trnh bin dch s thng bo s th t dng lnh li. Nu bin dch
thnh cng, chy chng trnh g lnh :
#./filedestination
V d
#./hello
- 26-
Bi 8
8.1.
Gii thiu
getpid()
int
getppid()
int
getpgrp()
int
setpgrp()
V d:
Lnh : printf("Toi la tien trinh %d thuoc nhom %d",getpid(),getgrp());
Kt qu s l:
8.1.1.
kill(pid, sig);
int
pid;
int
sig;
- 278.1.3.
Vic giao tip gia cc tin trnh c thc hin thng qua cc tn hiu chun
ca h thng. Tn hiu l mt s ngt qung logic c gi n cc tin trnh bi h
thng thng bo cho chng v nhng s vic khng bnh thng trong mi trng
hot ng ca chng (nh li b nh, li vo ra). N cng cho php cc tin trnh lin
lc vi nhau. Mt tn hiu (tr SIGKILL) c th c xem xt theo ba cch khc nhau:
1. Tin trnh c th c b qua: V d chng trnh c th b qua s ngt
qung ca ngi s dng h thng ( l s b qua khi mt tin trnh ang
c s dng phn nn.
2. Tin trnh c th c thc hin: Trong trng hp ny, khi nhn c 1 tina
stiu, vic thc hin 1 tin trnh c chuyn v mt quy trnh do ngi s
dng xc nh trc, sau tr li ni n b ngt.
3. Li c th c tin trnh tr v sau khi nhn c tn hiu ny.
Di y l mt s tn hiu thng gp:
SIGHUP
SIGINT
SIGQUIT
SIGILL
SIGTRAP
SIGIOT
By c pht khi c cc vn v vt l.
SIGEMT
SIGFPE
SIGKILL
SIGBUS
SYSGEGV
- 28SIGSYS
SIGPIPE
SIGALRM
SIGTERM
8.1.4.
Ngoi vic lin lc trc tip nh v d trn, cn cho php mt phng php lin
lc gia cc tin trnh khc, l lin lc qua "ng ng".
8.2.
8.2.1.
Nhiu tin trnh c th vit v c trn cng mt ng dn. Tuy nhin, khng c mt
c ch no phn bit thng tin cho cc tin trnh u ra.
- 30-
8.2.2.
To mt ng dn:
int
int
p_desc[2];
pipe(p_desc);
- 31fd=number;
printf(" So hieu mo ta la %d\n",fd);
switch (nread=read(fd, texte, sizeof(texte)))
{
case -1:
perror("Loi doc.");
case 0:
perror("EOF");
default:
printf("Van ban nhan duoc co %d ky tu: %s\n",fd, texte);
}
}
main() {
int
fd[2];
char chaine[10];
if (pipe(fd)==-1)
{ perror("Loi khoi tao pipe.");
exit(1);
}
switch (fork()) {
case -1:
perror(" Loi khoi tao tien trinh.");
break;
case 0:
if (close(fd[1])==-1)
perror(" Error.");
code_fils(fd[0]);
exit(0);
}
close(fd[0]);
if (write(fd[1]),"hello",6)==-1)
perror("Loi truyen.");
}
Kt qu chng trnh:
So hieu mo ta la: 5
Van ban nhan duoc co 6 ky tu: hello
Bi 9
9.1.
<sys/types.h>
<sys/socket.h>
<netinet/in.h>
<arpa/inet.h>
<netdb.h>
<stdio.h>
<unistd.h>
/*gethostbyname*/
/* close */
localAddr.sin_family = AF_INET;
localAddr.sin_addr.s_addr = htonl(INADDR_ANY);
localAddr.sin_port = htons(0);
/* Hm htons() dng chuyn i trt t byte ca s nguyn trc khi gi i do h
thng s dng c ch giao tip TCP/IP */
/* Rng buc tn vi socket */
- 35} /* while(read_line) */
} /* while (1) */
}
/*
/*
/*
/*
/*
/*
/*
/*
WARNING */
this function is experimental. I don't know yet if it works */
correctly or not. Use Steven's readline() function to have something robust.*/
rcv_line is my function readline(). Data is read from the socket when */
needed, but not byte after bytes. All the received data is read.
*/
This means only one call to recv(), instead of one call for each received byte. */
You can set END_CHAR to whatever means endofline for you. (0x0A is \n)*/
read_lin returns the number of bytes returned in line_to_return
*/
/* init buffer */
/* wait for data */
- 36/* end of line but still some data in buffer => return line */
if(rcv_ptr <n-1) {
/* set last byte to END_LINE */
*(line_to_return+offset)=END_LINE;
rcv_ptr++;
return ++offset;
}
/* end of buffer but line is not ended => */
/* wait for more data to arrive on socket */
if(rcv_ptr == n) {
rcv_ptr = 0;
}
} /* while */
}/*main*/
9.2.
<sys/types.h>
<sys/socket.h>
<netinet/in.h>
<arpa/inet.h>
<netdb.h>
<stdio.h>
<unistd.h>
<string.h>
<sys/time.h>
/* memset() */
/* select() */
<sys/types.h>
<sys/socket.h>
<netinet/in.h>
<arpa/inet.h>
<netdb.h>
<stdio.h>
<unistd.h> /* close() */
- 39-
Bi 10
FTP (File Transfer Protocol) l dch v cho php truyn cc tp tin gia hai my
tnh Client v Server, qun l cc th mc v truy cp vo th tn in t. FTP khng
c thit lp truy cp vo mt my khc v chy cc chng trnh my , ch
dng cho vic truyn tp tin.
kt ni FTP, g lnh sau :
ftp <IPAddressServer>
M t
ascii
bell
binary
cd directory
cdup
close
Hu kt ni
delete filename
dir directory
get filename
hash
help
Hin th cc tr gip
lcd directory
ls directory
mdelete files
mdir directories
mget files
To th mc trn my Server
mput files
Gi mt s tp tin t my cc b ln my Server
open host
Kt ni vi Server host t xa
put filename
pwd
- 40status
quote
quit
Thc hnh
C:\>ftp
(to) : 200.201.202.180
user : user01
Nhp vo tn user
Password :
ftp> dir
Xem ni dung th mc
ftp> ?
ftp>put autoexec.bat
autoexec.dos
ftp> ls
ftp>mget autoexec.dos
ftp>cd
/home/user01
ftp>mdir
document
To trong th mc user01 th mc mi
c tn document
ftp> help
dir
ftp>help
get
ftp> quit
- 41-
Bi 11
1.
Tp tin /etc/hosts
2.
Tp tin /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=false
HOSTNAME=linuxsvr.edu.vn
DOMAIN=edu.vn
GATEWAY=200.201.202.1
3.
Tp tin /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
IPADDR=200.201.202.1
NETMASK=255.255.255.0
NETWORK=200.201.202.0
BROADCAST=200.201.202.255
4.
redhat-config-network
5.
6.
[root@linuxsvr root]#hostname
linuxsvr.dng.vn
[
[
[
[
[
OK
OK
OK
OK
OK
]
]
]
]
]
- 427.
[root@linuxsvr root]#ifconfig
eth0
Link encap:Ethernet HWaddr 00:06:7B:02:71:21
inet addr:200.201.202.1 Bcast:200.201.202.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2326 errors:0 dropped:0 overruns:0 frame:0
TX packets:70927 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:218392 (213.2 Kb) TX bytes:6939053 (6.6 Mb)
Interrupt:9 Base address:0x4c00
lo
- 43-
Bi 12
- 44www
tankhoi01
tankhoi02
IN
IN
A
A
IN
A
200.201.202.1
200.201.202.1
200.201.202.2
root.linuxsvr.dng.vn (
- 45-
IN
IN
A
SOA
- 46-