Linux基础学习
Linux安装时选择分区
在linux系统中都有最少两个挂载点,分别是/ (根目录)及 swap(交换分区),其中,/ 是必须的
建议挂载的几大目录:
/-------根目录,唯一必须挂载的目录。不要有任何的犹豫,选一个分区,挂载它!(在绝大多数情况下 有2G的容量应该是够用了。当然了,很多东西都是多多益善的)
swap----交换分区,可能不是必须的,不过按照传统,并且照顾到您的安全感,还是挂载它吧。它的容量 只要约等于您的物理内存就可以了,如果超过了您物理内存两倍的容量,那绝对是一种浪费。
/home—这是您的家目录,通常您自己创建的文件,都保存在这里,您最好给它分配一个分区
/usr----应用程序目录。大部分的软件都安装在这里,如果您计划安装许多软件,建议也给它分配一个分区
/var----如果您要作一些服务器方面的应用,可以考虑给它分配一个较大的分区
/boot—如果您的硬盘不支持LBA模式(不太可能),您最好挂载它,如果挂载,将它挂载在硬盘的第一个 分区,应该比较稳妥。一般来说,挂载的分区只要100M大小就足够了
挂载点 装置 说明
/ /dev/hda1 10~15G足矣
/home /dev/hda2 最大的剩余空间
/boot /dev/hda3 100MB即可
swap /dev/hda5 大约内存大小(建议至少512MB)
linux里可使用的文件系统有:
Ext2:早期的格式,不支持日志功能
Ext3:ext2改良版,增加了日志功能,是最基本且最常用的使用格式了
Ext4:针对ext3系统的扩展日志式文件系统,是ext3文件系统的后继版本
ReiserFS:也有日志功能,其特点是处理小档案时速度快。
XFS:稳定与高效,在大小档案混合的系统里有优越的表现。
JFS:特色是最不占用CPU资源,如果你的电脑老旧那么这是最好的选择。
Linux系统启动过程
启动过程可以分5个阶段
1.内核的引导。
2.运行 init。
3.系统初始化。
4.建立终端 。
5.用户登录系统。
注:Linux系统有7个运行级别
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
Linux关机
正确的关机流程为:sync > shutdown > reboot > halt
sync 将数据由内存同步到硬盘中。
shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。
shutdown –h now 立马关机
shutdown –h 20:25 系统会在今天20:25关机
shutdown –h +10 十分钟后关机
shutdown –r now 系统立马重启
shutdown –r +10 系统十分钟后重启
reboot 就是重启,等同于 shutdown –r now
halt 关闭系统,等同于shutdown –h now 和 poweroff
Linux系统目录结构
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
Linux常用命令
reboot 重启
shutdown 关机
ifconfig 查看IP地址
useradd a 添加用户a
passwd a 设置用户a密码
su - a 切换到用户a
su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息
whoami 查看当前用户
logout 退出用户登录
systemctl status firewalld 查看防火墙状态
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 关闭防火墙开机启动
ls常用参数搭配
ls -a 列出目录所有文件,包含以.开始的隐藏文件
ls -A 列出除.及…的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
例:
1.按易读方式按时间反序排序,并显示文件详细信息
ls -lhrt
2.按大小反序显示文件详细信息
ls -lrS
3.列出当前目录中所有以“t”开头的目录的详细内容
ls -l t*
cd命令
1.进入要目录
cd /
2.进入"家"目录
cd ~
3.进入上一次工作路径
cd -
4.把上个命令的参数作为cd参数使用。
cd !$
pwd 查看当前工作目录路径
pwd -P 查看软链接的实际路径
mkdir创建文件夹
1.当前工作目录下创建名为t的文件夹
mkdir t
2.在tmp目录下创建路径为test/t1/t的目录,若不存在,则创建
mkdir -p /tmp/test/t1/t
rm删除文件
1.删除任何.log文件;删除前逐一询问确认
rm -i *.log
2.删除test子目录及子目录中所有档案删除,并且不用一一确认
rm -rf test
3.删除以-f开头的文件
rm – -f*
mv 移动/修改文件名
1.将文件test.log重命名为test1.txt
mv test.log test1.txt
2.将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中
mv llog1.txt log2.txt log3.txt /test3
3.将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
4.移动当前文件夹下的所有文件到上一级目录
mv * …/
cp复制
1.复制a.txt到test目录下,保持原文件时间,如果原文件存在提示是否覆盖
cp -ai a.txt test
2.为a.txt建议一个链接(快捷方式)
cp -s a.txt link_a.txt
cat显示文件详情
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file
-b对非空输出行号
-n输出所有行号
more分页显示
1.显示文件中从第3行起的内容
more +3 text.txt
2.在所列出文件目录详细信息,借助管道使每次显示5行
ls -l | more -5
按空格显示下5行
head 从头n行文本内容
1.显示1.log文件中前20行
head 1.log -n 20
2.显示1.log文件前20字节
head -c 20 log2014.log
3.显示t.log最后10行
head -n -10 t.log
查看文件位置
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。
find 命令参数
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group 按照文件所属的组来查找文件。
-type 查找某一类型的文件
grep文本搜索命令
1.查找指定进程
ps -ef | grep svn
2.查找指定进程个数
ps -ef | grep svn -c
3.从文件中读取关键词
cat test1.txt | grep -f key.log
4.从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR ‘^grep’ /tmp
5.查找非x开关的行内容
grep ‘[x]’ test.txt
6.显示包含ed或者at字符的内容行
grep -E ‘ed|at’ test.txt
VI 和vim 编辑文本
vi filename :打开或新建文件,并将光标置于第一行首
vi n filename :打开文件,并将光标置于第n行首
vi filename :打开文件,并将光标置于一行首
vi /pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename…filename :打开多个文件,依次进行编辑
屏幕翻滚类命令
Ctrl u:向文件首翻半屏
Ctrl d:向文件尾翻半屏
Ctrl f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部.
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
保存命令
按ESC键 跳到命令模式,然后:
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
chmod 访问权限
常用参数:
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限
例子:
1.增加文件t.log所有用户可执行权限
chmod a+x t.log
2.撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
3.给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
4.将test目录及其子目录所有文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c
chown 改为指定的用户或组
-c 显示更改的部分的信息
-R 处理指定目录及子目录
实例:
(1)改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log
(2)改变文件群组
chown -c :mail t.log
(3)改变文件夹及子文件目录属主及属组为mail
chown -cR mail: test/
tar压缩和解压
常用参数:
-c 建立新的压缩文件
-f 指定压缩文件
-r 添加文件到已经压缩文件包中
-u 添加改了和现有的文件到压缩包中
-x 从压缩包中抽取文件
-t 显示压缩文件中的内容
-z 支持gzip压缩
-j 支持bzip2压缩
-Z 支持compress解压文件
-v 显示操作过程
有关gzip及bzip2压缩
gzip实例:压缩gzip fileName .tar.gz和.tgz 解压:gunzip filename.gz或gzip -d filename.gz
对应:tar zcvf filename.tar.gz tar zxvf filename.tar.gz
bz2实例:压缩bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2
对应:tar jcvf filename.tar.gz 解压:tar jxvf filename.tar.bz2
实例:
(1)将文件全部打包成tar包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
(2)将/etc下的所有文件及目录打包到指定目录,并使用gz压缩
tar -zcvf /tmp/etc.tar.gz /etc
(3)查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)
tar -ztvf /tmp/etc.tar.gz
(4)要压缩打包/home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
| 管道命令
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
1.检查python程序是否启动
ps -ef|grep “python”
2.找到/tmp目录下所有txt文件
ls /tmp|grep ‘.txt’
3.检查nginx的端口是否存活
netstat -tunlp |grep nginx