Linux-OS
Day 01
1.首先安装虚拟机
2.安装RED HAT 5.5
–新建一个空盘符的虚拟机(Linux 版本是Ret Hat 5)
–在虚拟机中编辑设置里挂在iso镜像
–运行虚拟机自动安装
–在自动安装过程中设置根密码(root密码):111111
–欢迎引导界面:
1.禁用防火墙
2.SELinux关闭–SELinux主要作用就是最大限度地减小系统
中服务进程的可访问资源
3.建立普通用户sramedu
3.VmwareTools安装
vmware workstation – 菜单 – 虚拟机 – 安装vmwareTools的选项
–vmwareTools…tar.gz 托到桌面
–右键打开终端
–cd Desktop
–tar -zxvf VMWare…/tab自动补全 解压
–cd vmware… /tab自动补全
–su root 密码:111111
–./vmware…pl 可执行程序
–选分辨率
1024768
–reboot
VMwaretools的功能:虚拟机中的设备驱动、实机与虚拟机的文件共享(NAS)、还有一些开发功能的插件
4.Linux启动过程
–BIOS自检 固化到ROM芯片上的程序,对基本输入输出, 硬件设备进行检测
–启动GRUB --多重操作系统管理器
–加载内核
–执行init进程
–通过/etc/inittab 文件进行初始化(掌管init需要启动进程)
–登录Linux
–执行/bin/login
–login 程序会提示使用者输入帐号与密码,进行帐号和密码的验证,
如果验证通过,则为使用者初始化环境,并将控制权提交给shell。
–关于shell的启动
–执行系统脚本文件/etc/profile
–执行/etc/profile.d/目录的.sh的文件
–执行用户profile文件~/.bash_profile
–如果~/.bashrc存在,则执行
–如果/etc/bashrc文件存在,则执行
5.Linux系统结构
–应用层
– 图形用户界面(X—Window) 是Linux操作系统中提供的图形化用户界面(GUI)
GNOME ,KDE
–shell层
– shell本身是命令、命令解释程序及程序设计语言的统称
–内核层
6.Linux文件系统
–Linux中以文件的形式访问设备
–文件系统分为:
–ext 最早期的文件系统,稳定性及兼容性方面存在缺陷
–ext2 ext的二级扩展,解决了ext的相关缺陷而设计的可扩展的,高性能的文件系统
–ext3 日志文件系统
–ext4 第4个文件系统,是下一代的日志文件系统
7.Linux目录结构
–/ 根目录
–bin
基础的系统可执行命令
--boot
Linux的内核及引导系统程序所需的文件
比如:grub的文件:/boot/grub/menu.lst
--dev
必要设备的驱动
--etc
系统配置文件
/etc/profile
/etc/passwd
--home
普通用户的家目录
--lib
bin,sbin下的命令所需的库文件--动态链接
--mnt
临时挂载区--U盘
--proc
系统运行时内核及进程相关信息所存放的地方
--sbin
系统可执行命令命令
--root
超级用户root的家目录
--tmp
临时文件,系统重启不保存
--usr
Unix操作系统软件资源所存放的目录
--var
缓冲(catch)以及登录档案所存放的地方
8.文件路径
–绝对路径:
不依赖于当前的位置,总是以/开头
特殊绝对路径:
~ 代表当前用户的家目录
eg:cd ~
–相对路径:
依赖于当前的位置,不以/开头
特殊相对路径:
. 当前目录
… 上级目录
9.常用命令:
–ls 显示目录下的文件
–cd 切换路径
–pwd 查看当前路径(绝对路径)
–echo 回显命令
eg:echo $PWD
–date 显示当前时间
–cal 日期显示
--clear 清屏
--alias 命令重命令
alias 命令的格式
alias name='value'
name:可以是任意的字符串
value:必须是有效值
正确的命令+正确的命令选项
eg:
alias dir='dir --color=tty'
alias la='ls -la'
10.重启/关机命令:
–reboot 重启命令
–halt 关机命令
–shutdown 安全关机,可以设置关机的延时
shutdown -r now 立即重启
shutdown -h now 立即关机
shutdown -h 10:00 10点关机
shutdown -c 撤销已下达的shutdown命令,PS:必须在其他终端中执行次命令
11.bash快捷方式:
12.Linux下命令格式:
–命令名 [选项] [参数1] [参数2]
–eg:
ls -l /etc/
--常用命令详解:
--date命令:
date [选项] [Format]
--选项:
-d [datestring] 以datestring的格式进行显示
eg:
date -d "18:00:00 20151215"
date -d-1day
-s [datestring] 以datestring的格式进行设置时间
eg:
date -s "18:00:00 20151215"
date -d-1day
--Format
date +%Y%m%d
date -d-1day +%Y%m%d
--echo命令:(回显命令)
--shell中的三种引号机制:单引号',双引号",反引号`
--单引号:普通的字符串
echo 'hello world'
打印结果:hello world
echo '$PATH'
打印结果:$PATH
--双引号:普通的字符串当作字符串进行处理,双引号里可以进行变量的替换
echo "hello world"
打印结果:hello world
echo "$PATH"
打印结果:(环境变量PATH的值)
/bin/:/usr/bin.....
--反单引号:命令替换
echo `pwd`
打印结果:(pwd的运行结果,当前的路径)
/home/sramedu
--man手册:
帮助手册
Day 02
1.ls命令
-l
[文件类型][文件权限][硬连接数][用户][用户组][大小][最后修改时间][文件名]
eg:ls -l
drwxrwxr-- 2 sramedu sramedu 4096 12-15 10:20 Desktop
--文件类型:
Linux系统中7种文件类型:
- 普通文件
d 目录
l 软链接(符号链接)
p 有名管道
b 块设备
c 字符设备
s 套接字文件
--文件权限:
分为三组(u[ser]、g[roup]、o[ther])
每三个字符代表一组
三个权限:
r(ead)、w(rite)、x(excu)
--硬链接:
一个文件本身就是一个硬链接,一个文件可以有多个硬链接,这多个硬链接指向的都是同一个文件,
所以当修改其中一个文件时,其他文件也被修改,删除其中一个硬链接文件不会真正的删除该文件,
而是将其硬链接数-1,直至减为0,该文件才会被删除
PS:
硬链接不能跨系统--文件系统的机制
不能为目录创建硬连接--文件系统进行管理,用户管理会乱掉
PS:
当创建目录时,系统会创建两个硬链接,
其中一个为自身的硬链接 .
另一个为上一级目录的硬链接 .. --系统递归寻找
创建硬链接:
ln 目标文件 新的文件名
--符号链接:(软链接)
符号连接本身是一个文件类型,其相当于windows下的快捷方式
创建软连接:
ln -s 目标文件 新的文件名
2.mkdir
创建新目录
mkdir [目录名]
-p 递归创建
eg:
mkdir test01
mkdir -p 1/2/3
3.rmdir
删除空目录
4.rm
删除文件/目录
-r
递归删除(删除非空的文件夹)
-f
强制删除(没有提示语句)
-i
交互模式(有提示语句)
eg:
删除非空的文件夹:
rm -rf 1
5.touch
创建新的文件
更新已有的文件的最后访问时间
touch [文件名]
6.mv
移动文件/目录/
重命名文件/目录
mv [文件名1] [文件名2] 重命名
mv [文件名1] [路径] 移动
eg: mv 1.txt 2.txt
mv 1.txt ~
7.cp
文件/目录的拷贝
cp [文件名1] [路径+文件名2]
PS:路径不设置,缺省为当前路径
-r 递归拷贝,用于拷贝目录
eg:
cp 1.txt 2.txt
cp -r test/ test1
8.cat
查看文件内容
cat [文件名]
9.more/less
分页查看文件
按[空格]进行下一页
按[b]进行上一页
more -num [文件]
-num:
一次显示num行
less 兼容了vim的一些命令,可以使用vim命令进行搜索
more/less 退出:q或者ctrl+c退出
10.head/tail
查看文件的头几行/尾几行
head [文件名]
tail [文件名]
-n
显示行数根据-n的设定值
eg:
head -n 20 /etc/passwd
tail -n 20 /etc/passwd
11.file
查看文件类型 --经常用来查看coredump文件
file [文件]
eg:file /etc/passwd
12.wc
文字统计
-c 显示文件大小
-l 显示文件行数
-w 显示单词数
13.VIM
三种模式:
命令模式、插入模式、末行模式
命令模式–(i,o,a,I,O,A)–插入模式
插入模式–(ESC)–命令模式
命令模式–(😃–末行模式
末行模式–(ESC)–命令模式
--命令模式相关的操作
光标移动的操作:
gg:光标移至文件头
GG:光标移至文件尾
nG:光标移至第n行
$:行尾
^:行首
H:屏幕的首行
L:屏幕的末尾
M:屏幕的中部
h:光标左移
j:光标下移
k:光标上移
l:光标右移
删除/剪切:
dd:删除光标所在行
dw:删除一个单词
d$:从光标位置删除至行尾
d^:从光标位置删除至行首
ndd:删除n行
x:删除单个字符
复制:
yy:复制光标所在行
yw:复制一个单词
y$:从光标位置复制至行尾
y^:从光标位置复制至行首
nyy:复制n行
粘贴:
p
撤销/重做
u: 撤销
.: 重做
替换:
r:替换单个字符
nr:替换n个字符
~:大小写替换
--插入模式:(i,a,o,I,A,O)
i:在光标所在位置插入
a:在光标后插入
o:在光标下一行插入
I:在行首插入
A:在行末插入
O:在上一行插入
--末行模式:
:q 退出
:wq 保存并退出
:x 同wq
:q! 强制退出(不保存)
末行模式中的设置操作:
:set nu/nonu 设置/取消行号
:set ts=4 设置tab键的缩进
:set syntax=on/off 显示/取消关键字高亮
:set autoindent 设置缩进
:set mouse=a 设置鼠标有效
编写配置文件vim ~/.vimrc
set nu
set autoindent
set ts=4
set syntax=on
set mouse=a
使该配置文件立即生效:source .vimrc--刷到内存
替换命令:
:r [文件名] 在当前文件下打开[文件名]
内容替换:
:[startline],[endline]s/oldstring/newstring/g
eg:
:10,20s/sbin/haha/g 根据指定的行号局部替换
:%s/sbin/haha/g 全部替换
打开多个文件:
:vsp/sp [文件名]
eg:
:vsp /etc/passwd
:sp /etc/passwd
文件之间使用ctrl+w+w进切换
末行模式和插入模式都是命令模式 ,只不过相应的子模式功能比较多
14.文件权限
使用chmod命令进行文件权限的修改
chmod [选项] [文件名]
chmod进行文件权限的修改,有两种模式:
–(u、g、o、a)模式
eg:
rw-rw-r-- 1.sh
chmod u+x 1.sh
rwxrw-r-- 1.sh
chmod g-w 1.sh
rwxr–r--
chmod a=rwx 1.sh
rwxrwxrwx 1.sh
--八进制模式
eg:
rw-rw-r-- 1.sh
chmod 777 1.sh
rwxrwxrwx 1.sh
chmod 664 1.sh
rw-rw-r-- 1.sh
8进制像IP,内核可能就是这么管理;单字母模式有点像域名
Day 03
1.find 文件查找(全盘查找)
find [目录] [option] [参数] [-exec]
-name :通过名字进行查找
-type :通过文件类型进行查找
其中f代表普通文件
-perm :通过权限进行查找
-mtime :根据最后修改时间进行搜索
-user : 根据用户进行修改
2.which 命令查找(PATH环境变量进行查找)
3.whereis 查找特定的文件(二进制文件、man手册、soucre来源文件)
whereis [文件名]
-b:二进制文件
-m:man手册
-s:查找soucre来源文件
-u:不指定文件类型
系统相关文件的查找
4.locate(从数据库进程查找)
如果想查找最新的文件,需手动使用/usr/bin/updatedb进行数据库更新
5.grep 文件内容查找
grep [选择] [参数] [路径]
-c
-h
-I
正则表达式
* – 多个任意字符
find “*.txt”
. – 所有单个字符
grep “b.”
? -- 代表任意一个字符
find "?.txt"
[] -- 1个[]内指定的内容,也可以通过-指定范围
file[1].txt
file[1234].txt
file[1-4].txt
[!] -- 1个除了[]内指定的内容
file[!4].txt
6.重定向
输入重定向:
把标准输入的内容重定向至指定的位置:
read var < 1.txt
echo $var
输出重定向
把标准输出的内容重定向至指定的位置:
ls > result.txt
错误重定向
把本来打印至屏幕的错误信息重定向至指定的位置
find /etc -name “passwd*” 2> error.txt
/dev/null linux的黑洞文件,重定向到这里相当于永久删除
7.管道
cmd1 | cmd2
连接两个命令,第一个命令的输出当作第二个命令的输入
eg: ls -l | grep “root”
xargs的作用,(老师的写法,不太认同)将之前的输出作为一个文件进行操作 应该是,捕获一个命令的输出,配合管道传递给另外一个命令
eg: find . -name "*.txt" | xargs grep "helloworld"
8.文件打包
打包/解压(后缀为.tar)
打包:
tar -cvf test.tar ~/*
解包:
tar -xvf test.tar
解压并指定路径
tar -xvf test.tar -C ~/Desktop
打包/解压(后缀为.tar.gz)
打包:
tar -zcvf test.tar.gz ~/*
解包:
tar -zxvf test.tar.gz
解压并指定路径
tar -zxvf test.tar.gz -C ~/Desktop
打包/解压(后缀为.tar.bz2)
打包:
tar -jcvf test.tar.bz2 ~/*
解包:
tar -jxvf test.tar.bz2
解压并指定路径
tar -jxvf test.tar.bz2 -C ~/Desktop
打包/解压(后缀为.zip)
打包:
zip test.zip ~/*
解包:
unzip test.zip
解压并指定路径
unzip test.zip -d ~/Desktop
打包:多个文件定义为一个文件; 压缩:利用算法把文件变小
9.用户管理
export PATH=$PATH:/usr/sbin
配置文件:
用户信息:
/etc/passwd
文件格式:
[用户名]:[密码代号]:[UID]:[GID]:[用户注释]:[用户家目录]:[用户的登录shell]
用户密码:
/etc/shadow
文件格式:
[用户名]:[密码]:[上次密码修改日期]:[密码不能被修改的天数]:[密码需要重新更改的日期]:…
用户组信息:
/etc/group
文件格式:
[用户组名]:[用户组密码]:[GID]:[用户组员列表]
用户的添加及修改:
useradd 添加用户
指定条件添加用户:
-c 注释信息
-d 用户的家目录
-g 用户组
-G 用户的附加组
-s 用户的登录shell
-u 用户的uid
对已经添加的用户的相关属性进行修改
usermod 修改已经添加用户的属性
-c 注释信息
-d 用户的家目录
-g 用户组
-G 用户的附加组
-s 用户的登录shell
-u 用户的uid
删除用户:
userdel 删除用户
-r 删除用户并删除用户的家目录
passwd 创建或修改密码
passwd [用户名]
10.修改文件的所属
chown
eg:chown sramedu:sramedu 1.txt
11.用户切换:
– su 切换用户(不改变环境变量)
su - 切换用户(使用新用户的环境变量)
12.查看当前用户的身份
–who 查看所有的在线真实用户,所有终端
–whoami 查看当前正在使用的用户
–who am i 查看当前终端的真实用户
–id 显示当前使用用户的uid,gid以及用户所在的主组和附加组信息
13.环境变量
PATH 命令查找的路径
HOME 用户家目录
PS1 提示符
eg:PS1=’[\u@\h \w]$’
PS2 续行提示符
环境变量进行修改后,使用export立即生效
PATH=$PATH:/sbin
export PATH
-
相关配置文件
/etc/profile 登录shell 全局(针对所有用户)
/etc/bashrc 非登录shell 全局(针对所有用户)
~/.bash_profile 登录shell 局部(针对当前用户)
~/.bashrc 非登录shell 局部(针对当前用户)登录shell 在系统启动时加载一次 非登陆shell 每次运行bash,都会加载该配置文件的 配置文件配置之后,使用source命令使其立即生效 source /etc/profile source 与. 通知当前shell执行文件里的内容 .可以加载可执行文件 source不可以
Day 04
1.Linux网络配置
–修改虚拟机网络配置:
–桥连接:
Linux虚拟机和windows主机分别相当于局域网内的两台主机,也就是说两个操作系统的IP地址是独立的
–NAT:网络共享,Linux虚拟机共享window主机
–host-only:仅主机模式 虚拟机仅与主机通信
--网络相关配置:
ifconfig 查看网络的配置信息(显示所有网卡的信息包括回还地址)
ifconfig eth0 查看eth0网卡的相关信息
--设置网络信息:
ifconfig eth0 192.168.13.12 设置IP地址
ifconfig eth0 dynamic 设置自动获取IP
--相关配置文件:
/etc/sysconfig/network-scripts/ifcfg-ethx(x代表从0-n个网卡)
譬如:
修改为手动获取IP
#BOOTPROTO=dhcp //注释掉动态获取IP的参数
BOOTPROTO=none //设置为手动获取IP
IPADDR=192.168.13.12
NETMASK=255.255.255.0
GATEWAY=192.168.13.254
--相关命令:
ifconfig eth0 down 暂时关闭网卡
ifconfig eth0 up 打开网卡
ifdown eth0 关闭网卡
ifup eth0 打开网卡 //重新加载/etc/sysconfig/network-scripts/ifcfg-ethx 配置文件
--设置路由信息:
route 查询路由信息
route -n 查询路由信息以IP形式显示
--添加路由信息:
route add -net 192.168.13.0 netmask 255.255.255.0 dev eth0
--添加默认路由信息:
route add default gw 192.168.13.254
--删除路由信息:
route del default
路由可以充当网关,负责根据路由表转发;网关是一个大概念,只要连接两个不同的设备都可以叫网关,路由器、交换机、主机都可以称为网关
--ping命令
ping IP地址 通过ping命令可以测试网络是否正常
ICMP传输层协议和 TCP不一样
--其他相关配置文件:
/etc/sysconfig/network 文件
NETWORKING=yes 开机启动网络
--DNS相关配置信息
netstat -nap | grep ’tcp'
查询当前正在使用tcp协议的进程及其进程ID,端口号/IP地址信息
/etc/resolv.conf 配置首选和备用DNS
/etc/hosts 静态域名映射
/etc/host.conf 配置名字解析器
--其他命令:
--关于ftp服务:
vsftp
相关的配置文件:
/etc/vsftpd/vsftpd.conf --ftp的相关配置信息
service vsftpd start/stop/restart/reload 开启关闭vsftpd服务
netstat -nap | grep ’ftp' 查看该服务是否开启
ftp 192.168.13.12 登录ftp
相关命令:ls
get/put
quit
对于没有自动安装的服务,需手动安装:
1.挂载redhat....iso
2.cd /media/R.../Server/
3.rpm -ivh ftp..../telnet-server.....
rpm红帽的包管理软件
--关于telnet服务:
配置telnet:
/etc/xinetd.d/telnet
disable = no
service xinetd restart/reload
telnet IP地址
--关于ssh服务:
service sshd restart
ssh username@ipaddr
eg:ssh sramedu@192.168.13.12
--开机服务管理:
chkconfig --list 查看服务的开机启动情况
chkconfig --level 35 vsftpd on 开机级别为3,5时,开机启动vsftpd
2.启动级别:
–开机启动级别:
/etc/inittab --init 进程的配置文件
0 -- halt 关机
1 -- single User Mode 单用户模式
2 -- Multi User Mode ,Not NFS
3 -- Full Multi User Mode
4 -- Unused
5 -- X11 带有图形界面
6 -- Reboot
/etc/inittab 配置文件中:
id:5:initdefault 默认的启动级别
启动切换:
init 3
init 0 //关机
init 6 //重启
--关于启动过程中的通过/etc/inittab 文件初始化的过程解析
init进程通过/etc/inittab进行初始化,其中执行一下操作:
1.执行系统初始化脚本/etc/rc.d/rc.sysinit(有init进程执行的第一个脚本)
对一些相关的硬件设施,键盘、鼠标等进程初始化
2.执行不同运行级别的启动和停止脚本/etc/rc.d/rcX.d[KS]
K开头的服务是关闭某个服务
S开头的服务是开启某个服务
rcX.d内的文件本身是符号连接,指向的/etc/rc.d/init.d的shell程序
3.执行用户自定义引导程序/etc/rc.d/rc.local
主要是方便管理员管理这些服务哪些用户可以调用,那种方式可以访问 是图形界面还是命令行终端
3.进程管理
–查看进程的命令:
ps 查看当前进程
ps -l 以长格式显示进程相关信息
ps u 显示当前用户所有终端进程信息
ps au 显示所有用户的所有终端进程信息
ps aux 显示所有用户的所有进程信息(包括守护进程(不带有终端显示的进程))
pstree 查看进程树 --可以看到继承关系
top 指令 定时刷新
--杀死进程的命令
kill 命令
kill pid
kill -9 pid 强力杀死进程
pkill 进程名
--作业控制 --后台的进程,不占用终端的标准输入、输出
jobs 查看当前正在后台运行的作业
使程序后台运行
./a.out &
后台作业移到前台
fg %[作业id]
其中:作业id通过jobs查询
前台作业放置后台运行
ctrl+z 挂起前台作业
bg %[作业id]
相关的进程操作的快捷方式:
ctrl+c 结束进程
ctrl+z 挂起进程
ctrl+\ 退出进程