Linux系统学习

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))

你可能感兴趣的:(linux)