Linux基础
第一章:基础操作
1 了解linux目录结构
目录层次结构
Linux系统使用树型目录结构,在整个系统中只存在一个根目录(文件系统)
Linux系统中总是将文件系统挂载到树型目录结构中的某个目录节点中使用
根目录 /
根目录分为一下目录:
/bin /sbin /home /boot /dev /proc /var /temp /usr /etc
(1)/ : 根目录
(2)/bin :存放启动时所需要的普通程序
(3)/boot : 存放内核及启动所需要的文件
(4)/dev :存放设备相关的文件
(5)/etc :存放系统的配置文件
(6)/home:存放用户文件的主目录,用户数据( cd ~ 可进入自己的主目录)
(7)/lib :存放启动时所需要的库文件
(8)/mnt :存放临时的映射文件,通常是一些用来安装其他设备的子目录
(9)/proc :这是一个虚拟的文件系统,存放当前系统的状态(有关进程和系统信息)
(10)/root: 超级用户主目录
(11)/sbin: 存放启动时所需要的系统管理程序
(12)/tmp :存放启动时产生的临时文件
(13)/usr : 包含一般不需要修改的应用程序,命令程序文件,程序库,手册
(14)/var :存放系统产生的经常变化的文件
2 文件及文件夹的基本操作
查看当前目录:pwd
切换目录:cd
文件
新建:
- 新建空文件:touch
- 利用重定向新建文件>:
删除:
rm (删除文件)
修改:
mv(移动并改名)
查看:
ls (查看目录下有没有这个文件)
查看文件里面的内容
cat /etc/inittab (直接查看到最后一页)(-n 参数可以显示行号,-A 显示行结束符)
more /etc/initab (一次显示一页,回车键换行,空格键换页)
less /etc/initab(一次显示一页,回车键换行,空格键换页,支持翻页键)
ls –al 以详细列表形式查看所有文件及文件夹
tac /etc/inittab (从尾部向头部读,专门用于读取日志文件)
head –n 20 /etc/inittab 查看文件头20行
tail -n 20 /etc/inittab 查看文件尾20行
tail –f /var/log/message 实时查看文件最后10的内容
其它:
cp(复制)
文件夹
新建:
mkdir
删除:
rm -r (删除文件夹)
修改:
mv(移动并改名)
查找:
ls (查看目录下有没有这个文件夹)
其它:
cp -r (复制)
3 加强内容:
mkdir -p 3/2/1/ 建立多层文件夹
mkdir 1 2 3 建立多个文件夹
ls -F|grep / 只查看文件夹ls -aF|grep /|awk 'BEGIN{FS="/"} {print $1}'
ls -F|grep -v / 只查看文件
mv –f 不出现提示,直接overwrite
rm –f 不出现提示,直接删除
\cp 2/1.txt 3/1.txt 不提示直接overwirte
\cp -r /1/* 2 将1文件夹内所有内容复制到2目录内,不提示直接overwirte
b -
块设备文件。
d
-
目录。
c
-
字符设备文件。
p
-
管道文件。
l
-
符号链接文件。
f
-
普通文件。
scp 主要用于网络之间的复制
示例:
scp newFile 192.168.1.156:/root
将本地目录下newFile 文件复制到192.168.1.156主机的/root目录下。
scp 192.168.1.156:/root/my.txt /root
将192.168.1.156主机的/root目录下的my.txt复制到本机的/root目录下。
scp 192.168.1.156:/root/test1.txt 192.168.l.153:/root
将192.168.1.156主机的/root目录下的test1.txt复制到192.168.l.153主机/root目录下。
find / -name inittab
查找/目录下及子目所有inittab 文件或文件夹
find / -name "ini*"
查找/目录及子目录所有含有ini的文件或文件夹
find . -name "[A-Z]*" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,
drwxr-xr-x /root
表示/root 目录创建者有读(4)写(2)执行(1)的权限
同组的用户读和执行的权限
其它用户读和执行的权限
chmod g+x 1.txt 同组中的用户加上可执行的权限
chmod 456 1.txt
chmod -R 777 temp_dir/
chown - R oracle:admin temp_dir 改变目录和子目录的属主为oracle和属组为admin
chgrp - R admin temp_dir 改变目录和子目录的属组为admin
第二章:VI编辑器
VI编辑器有三种模式:
1:命令模式
2:文本编辑模式
3:末行模式
Vi t1.txt 进入的是命令模式。
命令模式-------(输入i)--------进入文本编辑模式
文本编辑模式------(按ESC键)---------命令模式
命令模式-------(:)--------进入末行模式
末行模式------(按ESC键)---------命令模式
命令模式 (定位,复制,粘贴,删除)
定位:
14G 跳转到14行。
G 跳转到最后行。
^跳转到行首。
$跳转到行尾
e跳转到当前字符串尾
w跳转到下一个字符串前
/字符串 查找到指定字符串
复制:
yy 复制当前光标所在的那一行。
y^ 复制当前光标到到行首。
y$ 复制当前光标到到行尾。
粘贴
p 粘贴
删除
dd 删除当前光标所在的行。
文本编辑模式(文本的输入)
末行模式(保存,退出,替换)
w保存
q退出
! 强制
r 读文件
设置行号
set nu设置行号
set nonu取消行号
替换
%s/被替换的内容/替换后的内容/g (表示全部替换)
%s/被替换的内容/替换后的内容 (每行第一个匹配全部替换)
17s/被替换的内容/替换后的内容/g (17行全部替换)
进阶语句:
vi FileName 打开文件 FileName,并将光标置于第一行首。
vi +n FileName 打开文件 FileName,并将光标置于第 n 行首。
vi + FileName 打开文件 FileName,并将光标置于最后一行。
vi + /pattern File 打开文件 File,并将光标置于其中第一个
:n1,n2 co n3 将 n1 行到 n2 行之间的内容拷贝到第 n3 行下。
:n1,n2 m m3 将 n1 行到 n2 行之间的内容移至第 n3 行下。
:n1,n2 d 将 n1 行到 n2 行之间的内容删除。
第三章:用户管理
用户管理命令
adduser 添加用户账号
passwd 设置(更改)用户口令
userdel -r 删除账户用户(及宿主目录)
usermod 设置用户属性
用户账户管理实例
建立用户帐号
# adduser st01
设置用户口令
# passwd st01
设置用户帐号属性
锁定用户帐号禁止登录
# usermod -L st01
删除用户帐号
# userdel -r st01
用户帐号相关文件和目录
用户帐号信息保存在passwd文件中
/etc/passwd
用户的加密口令保存在shadow文件中
/etc/shadow
用户的宿主目录是home目录中与用户名称相同的目录
/home/teacher
用户的初始配置文件来在skel目录(配置模版)
/etc/skel
用户帐号信息保存在passwd文件中
用户口令信息保存在shadow文件中
passwd和shadow文件保存在/etc目录中
用户组管理命令及文件
groupadd 添加指定名称的用户组账户
groupdel 删除指定名称的用户组账户
/etc/group/ 保存用户组账户信息
用户组账号管理实例
添加用户组
# groupadd class1
在建立用户时指定用户组
# adduser -g class1 zelin
更改用户的组帐号
# usermod -g class1 zelin
删除用户组
# groupdel class1
第四章:应用程序安装:
安装有两种方式
1:rpm安装
2:源码安装
1:rpm安装
1:rpm -ivh firefox-3.0.12-1.el5_3.i386.rpm
安装
2:rpm -e firefox
卸载
3:rpm –ql firefox
可查看安装后所有文件
4:
rpm –q firefox
rpm –qa|grep firefox (推荐)
查找是否安装
5:rpm -U firefox-3.0.12-1.el5_3.i386.rpm
更新
6:rpm -qf /bin/mount
查询文件/bin/mount 由哪个RPM包安装
7:rpm -qi vsftpd
查询软件安装包的信息
8:rpm –qc vsftpd
查询软件安装包的配置文件列表
src.rpm包的安装方法
将src.rpm包转换成rpm包再进行安装
1:rpmbuild --rebuild vsftpd-2.0.1-5.src.rpm (rpmbuild命令一般没有安装)
生成RPM包
2:cd /usr/src/redhat/RPMS/i386 切换到目录(建议使用find命令查找)
3:rpm –ivh vsftpd-2.0.1-5.rpm
2源码安装
(三步曲)
./configure
make
make install
第五章:系统管理
1 linux系统启动过程
当用户打开PC
的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导
Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc
当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这
样就完成了从开机到登录的整个启动过程。
2 系统运行级别
0:关机
1:单用户文本模式
2:多用户文本模式,但无NFS网络支持
3:多用户文本模式
4:保留,暂未使用
5:多用户图形化模式,(默认)
6:重启
3:查看当前运行状态 runlevel
切换运行状态 init 6 重启
永久改变开机后运行状态 修改/etc/inittab
id:3:initdefault:
红色表示开机后运行级别
4:服务
服务分为独立服务和非独立服务
chkconfig --list
列出所有服务在所有运行级别下的启动状态。
chkconfig --list wdaemon
列出wdaemon服务在所有运行级别下的启动状态。
chkconfig --list|grep wdaemon
列出wdaemon服务在所有运行级别下的启动状态。
独立服务
chkconfig --level 23 nfs on
修改nfs服务在运行级别为23时为启动状态,不改变其它运行级别的启动状态。
非独立服务
chkconfig rmcp on
修改在rmcp服务在所有运行级别下为开启的状态,必须xinetd也是开启状态
改变服务状态
service 服务名 start/stop/restart
进程的操作
查看所有进程:ps –ef
实时查看进程(CPU,MEM):top
删除:kiil -9 PID
删除所有run.sh进程:killall run.sh
第六章:定时任务
crontab –e 在里面添加我们的的定时任务
crontab –l 查看定时任务
第一段写分钟,第二段小时,第三段天数,
第四段月,第五段星期 第六段命令。*代表每
* * * * * 带路径的命令
表示每分都执行
15 * * * * 带路径的命令
表示第小时的第15分执行
15 2 * * * 带路径的命令
表示每天2点时的15分执行
*/20 2 * * * 带路径的命令
表示每天2点时的每隔20分执行
*/20 2,4,6 * * * 带路径的命令
表示每天2,4,6点时的每隔20分执行
root用户的定时任务文件为
/var/spool/cron/root
第七章:网络
1 网卡的命名
eth0代表第一块网卡(Ethernet)。
eth1代表第二块网卡(Ethernet)。
Loop代表本地环回网卡。(Local Loopback)
2 查看网卡的连接状态
Ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 1000baseT/Full
Supports auto-negotiation: No
Advertised link modes: Not reported
Advertised auto-negotiation: No
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Link detected: yes
表示查看第一块网卡的硬件信息。最后一行Link detected: 显示了连接是否连接。
ethtool -i eth0
driver: vmxnet
version: 2.0.1.1
firmware-version: N/A
bus-info: 0000:02:00.0
表示查看网卡的驱动,firmware等信息
3 查看网卡信息
ifconfig 查看已连接网卡的信息
ifconfig –a 查看所有网卡的信息
ifup eth0开启网卡
ifdown eth0关闭网卡
4:配置IP信息
临时生效
ifconfig eth0 192.168.1.199 netmask 255.255.255.0
永久生效
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改IP配置信息
DEVICE=eth0 指定设备名
BOOTPROTO=static 指定用表态static还动态dhcp IP,
HWADDR=00:0C:29:52:8F:B1 MAC地址
ONBOOT=yes YES还是NO决定了网卡是否随便系统启动
IPADDR=192.168.1.189 Ip地址
NETMASK=255.255.255.0 子网掩码
GATEWAY=192.168.1.1 网关
重起服务使配置生效
service network restart
5:配置路由信息
5.1:查看路由信息
route
优先级,静态> 动态> 默认
5. 2:添加路由
route add –net 172.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
5.3:DNS
/etc/resolv.conf
nameserver 192.168.1.1 指定DNS服务器
第八章:常用操作
1:修改系统时间
- date –s “20110504 19:15:00”
- clock –systohc 将系统时间写入到硬件中。
2:修改主机名
A永久性修改
hostname你要的主机名
将 /etc/sysconfig/network
HOSTNAME=修改为你要的主机名
修改/etc/hosts
127.0.0.1 修改为你要的主机名
B临时性修改
hostname主机名
3:光驱的使用
a:挂载
mount /dev/hdc /mnt
b:卸载
umount /dev/hdc 卸载最后挂载
umount /mnt 卸载指定目录挂载
4:切换用户
su - root
一定要加中画线
cd ~
切换到宿主目录。
cd ../../
返回上二层目录
Clear 清屏
Watch -n 8 ls
每隔8秒执行一次ls
Which shutdown
返回一个命令的路径
Who
查看登录用户
Who I am
查看当前用户
5.sed awk基本用法
sed –n ‘10p’ /etc/passwd
将/etc/passwd 第十行打印出来
sed -n '/root/p' /etc/passwd
将/etc/passwd行中匹配字符串root打印出来
sed -n '/^root$/p' /etc/passwd
将/etc/passwd行只有root打印出来
sed 加强
sed s替换
sed ‘s/要替换的内容/替换后的内容/g’ /etc/passwd
并不一定用/表示分隔,如sed 's!/home/admin!/home/my!g' path.txt
sed '1s/root/root___root/2' /etc/passwd
替换第一行中的第二个匹配的内容
定位(行号定位,匹配定位)
sed '1s/root/root___root/2' /etc/passwd
s前面用1代表行号定位
cat -n /etc/passwd|sed '/root/s/root/root----------root/g'
s前面通过匹配的方法定位
cat -n /etc/passwd|sed '/^root$/s/root/root----------root/g'
s前面通过匹配的方法定位,且匹配的那行只有root
删除某行
sed ‘1d’ /etc/passwd
删除第一行
cat -n /etc/passwd | sed '4,5d'
删除第四第五
sed ‘/root/d’ /etc/passwd
删除匹配root的行
前面插入一行
sed ‘1i this is my interting row’
后面插入一行
sed ‘1a this is my interting row’
改变第5行
sed ‘5c this is my interting row’
awk –F: ‘{print $3}’ /etc/passwd
以:为分隔打印出第三列
awk -F: '$1=="zjf" {print $3}' /etc/passwd
以:为分隔,且第一列为zjf时打印出第三列
awk -F: '$1 ~ /f/ {print $1,$3}' /etc/passwd
以:为分隔,且第一列匹配f时打印出第一,三列
awk -F: '/f/ {print $1,$3}' /etc/passwd
以:为分隔,且行中匹配f时打印出第一,三列
cat /etc/passwd|awk -F: '$5=="’$变量名’" {print $1,$5}'
当第5列等于变量值时,打印/etc/passwd/第一列和第五列
cat /etc/passwd|awk -F: '$5=="MySQL Server" {print $1,$5}'
当第5列等于字符串MySQL Server时,打印/etc/passwd/第一列和第五列
cat /etc/passwd|awk -F: '$5~/MySQL/ {print $1,$5}'
当第5列匹配字符串MySQL时,打印/etc/passwd/第一列和第五列
行首删除空格
cat sort1.txt|sed 's/^[[:space:]]*//g'>sort_temp.txt
行尾删除空格
cat sort1.txt|sed 's/[[:space:]]*$//g'>sort_temp.txt
删除行首行尾的所有空格及行间的空行,
cat test.txt|sed 's/^[[:space:]]*//g'|sed 's/[[:space:]]*$//g'|sed '/^$/d'
6.文本格式转换
unix2dos 文件名 将UNIX格式文本转化为DOS文本
dos2unix 文件名 将DOS文本转化为UNIX文本
7.tar命令
建立归档
对文件和目录进行归档
# tar -cf mydir.tar newDir
将newDir 目录归档为mydir.tar
# tar -xf mydir.tar
将归档mydir.tar恢复为原内容
# tar –cf myfile.tar *.txt
将当前目录下所有后缀为txt文本打包为myfile.tar
# tar -xf myfile.tar
将归档myfile.tar恢复为原内容
压缩并归档加-z参数
对文件和目录进行压缩归档
$ tar -czf myfiles.tar.gz files/
tar:命令名;czf:命令选项:t表示查看归档,
z表示归档文件是压缩格式,f用于指定归档文件名myfiles.tar.gz:
命令参数,归档文件名;files/:命令参数,需要进行归档的文件或目录名
查看归档中的文件列表
查看归档文件中的目录列表
$ tar -tf myfiles.tar
查看压缩归档文件中的目录列表
$ tar -tzf myfiles.tar.gz
tar:命令名; tzf:命令选项:t表示查看归档,z表示归档文件是压缩格式,f用于指定归档文件名myfiles.
tar:命令参数,需要查看的归档文件名
tar –rf sh.tar my.txt
将my.txt 增加到sh.tar包中
tar –delete –f sh.tar my.txt
将my.txt 从sh.tar中去除
$ tar -xzf myfiles.tar.gz -C restore/
恢复归档文件到指定目录
tar:命令名;xzf:命令选项:x表示回复归档,z表示归档是压缩格式,f用于指定归档文件名
myfiles.tar.gz:命令参数,归档文件名; -C:命令参数-C指定归档恢复的目标目录
restore:命令参数归档恢复的目录名。
8:grep 使用
grep str1 查找含有str1对应的行
grep –v str1 查找除含有str1的行的所有行
grep –e str1 –e str2 查找含有str1 或str2的所有行
9:sort排序
sort -t ":" -k 2 -n -r numbet.txt
以:为分隔取第二列,按数字大小排序(-r 表示降序)。
10:uniq unique(唯一的)
uniq -d 显示重复的行
uniq –c 显示重复行的次数
uniq 显示的行不重复
11:链接
链接分为:软链接,硬链接
软链接:相当于是快捷方式。
ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 eth0-link
硬链接 :相当于复本,一个改变同时改变。删除任意一个不影响其它。
ln /etc/sysconfig/network-scripts/ifcfg-eth0 eth0-link-hard
12 :几个重要的文件
~/.bash _history 记录了用户执行的所有命令
~/.bash_profile 记录了用户的环境和启动程序
~/.bashrc 记录了用户的fun和别名
~/.bash_logout 用户logout时执行的脚本
/etc/bashrc 记录了系统的fun和别名
/etc/profile 记录了系统的环境和启动程序
取别的样例
alias ws=’ /usr/local/apache2/bin/apachectl start’
13:查看文件或文件夹使用大小
du –h –s 文件夹或文件
-h 根据文件或文件夹大小变化计量单位
-s 汇总求和
14:修改配置文件后生效命令
方法1:
. ~/.bashrc
方法2:
source ~/.bashrc
通过这两种方法不需要重新启动bash环境