1 历史
Linux:Linux Is Not Unix
Unix:是Linux的前身,因为收费,只有在公司和学校才能用到,一位高手在学校用到以后觉得非常好就写了一个Linux。
Linux核心:基于内核的操作系统,Linux兄弟只写内核(管理硬件的程序)
Linux发行版本:debian,slackware,suse,红旗,turbolinux,redhat,fedora,mandrake(依赖于内核的工具),在linux内核上写了外围的依赖程序,根据依赖程序又写了许多许多管理硬件工具
Linux版本:r.x.y,r:release version,x:偶数,稳定版本,奇数,开发中的版本,y:错误修补的次数 eg:2.0.38
2 分区
VFS:虚拟文件系统,所有文件系统统一的接口,可以根据接口编程(多态)
分区表:如图,记录了分区的信息,一般位于对应分区的开始,最多只能记录四条记录,所以主分区加扩展分区最多不能超过四个(一般用来装系统),下面那张表记录了逻辑分区(不同的文件系统)
格式化:建立不同的文件系统,就是对应数据不同的存储规格。
为什么要分区:可以在同一块硬盘上装各种各样的文件系统,各种各样的小格,不同的文件系统的拥有不同的小格。更加容易管理
windows:c:(主分区),d:(扩展分区/逻辑分区),e:(扩展分区/逻辑分区)
linux分区的命名:所有的设备在Linux看来都是文件,分为字符设备(如键盘)和块设备(如硬盘)
--/dev/xxyN,/dev/:所有设备文件所在的目录名,xx:分区名的前两个字母标明分区所在的设备的类型。通常是hd(IDE磁盘)或sd(SCSI磁盘)。y:这个字母标明分区所在的设备,代表第几个硬盘。N:代表分区,前四个分区(主分区和逻辑分区)是从1到4,逻辑分区从5开始。例如:/dev/hda3:第一个IDE硬盘上的第三个主分区或逻辑分区,/dev/sdb6:在第二个SCSI硬盘上的第二个逻辑分区。
访问分区:通过挂载(mount)实现,挂载是将分区关联到某一目录的过程。挂载分区使起始于这个指定目录(称为挂载点)的贮存能够被使用。如:mount /dev/cdrom /mnt/cdr
至少两个分区:/分区,SWAP分区:把硬盘当内存使用(虚拟内存),实际物理内存的两倍
3 目录结构:google
4 linux启动过程(boot sequence)
load bios(hardware information)
read MBR‘s config to find out the OS:根据MBR的配置找到启动哪个操作系统
load the kernel of the OS:这个操作系统启动的核心文件
init process starts:init进程启动
execute /etc/rc.d/sysinit:运行命令
start other modules (etc/modules.conf):read读取系统各种模块
execute the run level scripts:,启动级别,启动到哪个层次,分层结构,分为6层,每层之间互不影响,可以修改(/etc/inittab)
execute /etc/rc.d/rc.local:执行脚本
execute /bin/login
shell started..
5 linux帮助
命令 --help
man 命令
6 command(常用)
ls:列出当前目录下的文件和目录,ls -l:显示详细信息,ls -R:树状递归显示目录下的所有文件和目录下的目录
tree:树状显示
cd:进入目录,cd ..返回上层路径
pwd:当前路径
mkdir:建目录
rmdir:删除空目录
rm -rf:递归强制删除目录或文件,强制删除不跳出确认信息
touch:创建文件
cp:复制,cp -r:递归拷贝目录
mv:移动,改名
vi:文本编辑器(跨平台,远程),vi 文件名(创建或编辑文件)
一进去为命令模式:只能敲命令
a:追加
切换为命令模式:esc
:w 存盘,:q 退出
more:查看文件内容
cat:查看文件内容
tac:逆序查看文件内容
head:查看文件,head -3:查看文件前三行
tail:查看文件,tail -3:列出最后三行
clear:清屏
find:查找文件在什么位置上,find / -name my*
grep(常用):grep 字符串 文件名,查找对应字符串在文本文件的哪一行
whereis:查看命令是由谁执行的以及命令的文档
echo:echo $环境变量名:查看对应的环境变量的值
ln:链接,两个文件保持同步,与copy不同。ln -s:软链接,相当于windows的快捷方式
source : 刷新文件,配置了path以后需要对其刷新使其立即生效:source .profile
useradd:增加用户,在/home增加对应文件夹,默认和用户名相同的组,-g 组名
usermod:修改用户名,-g:修改组名
userdel:删除用户
su 用户名:切换用户
passwd:指定用户密码
more /etc/passwd:所有的用户
more /etc/group:组的信息
ls -l:显示详细信息(详解):
第一位:分为-:文件,l:链接,d:目录
第二位到第四位:文件/目录的所有者,拥有者的权限
第五位到第七位:文件/目录所有者同组的其他人的权限
第八位到第十位:剩下的人的权限
chmod:修改权限,chmod u+x 文件名:修改当前用户的权限,chmod g+x 文件名:修改同组权限,chmod 777:高级操作,第一个7代表用户权限,第二个7为同组权限,第三个7为剩下人权限,把7对应的二进制来表示读写执行(1为有,0为没有)如:7:111,5:101
chown:修改所有者,chown 所有者 文件名
wc:统计指定文本文件的行数,字数,字符数wordcount
col:过滤控制字符
管道:将一个命令的输出传送给另一个命令,作为另一个命令的输入,命令1|命令2|...命令n
ls -Rl /etc | more
cat /etc/passwd | wc
cat /etc/passwd | grep lrj
dmesg | grep eht0
man bash | col -b > bash .txt
ls -l | grep "^d":之列出目录
ls -l * | grep "^-" | wc -l:当前目录下有多少文件
wall:wall ’命令‘ ,将命令执行的结果发送给每个登录到shell上来的人
命令替换:将’命令‘替换为命令
重定向:将命令输出写入文件,或将文件读取输入命令
输出:ls > cmd.txt , ls >> cmd.txt ,>代表替换,>>代表追加
输入:wall < aa.txt
export:当linux下设定环境变量之后想让其他人使用则需要使用该命令,如:export PATH=/home/yyz/Applications/adt-bundle-linux-x86_64-20130917/sdk/tools:$P
ATH
ps:观察下面有哪些进程,ps -ef:当前用户下的所有的进程,ps -ef | grep 进程名
kill:杀进程,kill -9 进程名,强制杀进程
service:服务管理,service 服务名 start:启动服务。service 服务名 stop:关闭服务,常用:service iptables stop,关防火墙
wget 网址:本地连接网站(其中一个功能),测试
7 系统启动调用
/etc/profile:只要当第一个人登录才起作用,设置系统级的环境变量,系统总的环境变量
/etc/bashrc:只有当第一个用户登录进来后才运行,设置自动执行的程序,系统总的自动启动程序
~/.bash_profile:每个用户登录进来后设置环境变量,每个用户各自的环境变量
~/.bashrc:每个用户登录进来后设置自动启动程序,每个用户各自的自动启动程序
开机自动运行:修改/etc/rc.local 配置方式和上面相同,如:
JAVA_HOME=/...
export JAVA_HOME
/tomcat/bin/startup.sh
注意:每个linux发行版都不一样,如ubuntu:想知道细节的话可以参看/etc/gdm/Xsession脚本,里面定义了source bash profile文件的顺序。先是/etc/profile,然后是~/.profile,再由/etc/profile触发全局bashrc:/etc/bash.bashrc,由~/.profile触发本地bashrc:~/.bashrc。
8 搭建部署环境
必须使用纯命令行操作,因为server使用纯命令行
服务自启动:chkconfig命令的使用 (启动级别和防火墙的设置(iptables))