一、Linux简介
1、什么是Linux
1.1、Linux操作系统:指GUN/Linux,采用Linux内核的GUN操作系统。
1.2、严格说的话,Linux不是一个操作系统,Linux只是一个操作系统的内核。内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等。
2、Linux发行版本
(1)、RedHat,(2)、CentOS,(3)、Ubuntu,(4)、SUSE、(5)、Debain
3、远程登录
通过ssh服务实现远程登录Linux系统,默认ssh服务端口号为22。Windows系统上远程登录客户端有:Xshell、SecureCRT等。
二、Linux基本使用
1、用户与身份
1.1 root用户
root用户的根目录:/root
1.2普通用户
普通用户的家目录:/home/zfsky
1.3切换用户:su用户名
Øroot到普通用户:su zfsky无需密码。
Ø普通用户到root:su root需输入密码。
1.4查看用户或用户组
Øwhoami:查看当前登录的用户名
Øgroups:查看当前登录用户的组内成员
Øgroups zfsky:查看zfsky用户所在的组以及组内成员
Øcat /etc/passwd:查看系统存在的所有用户名
格式:root:x:0:0:root:/root:/bin/bash
l第一字段:用户名
l第二字段:口令,映射到/etc/shadow文件中
l第三字段:UID
l第四字段:GID
l第五字段:用户名全称
l第六字段:用户的主目录所在位置
l第七字段:用户所用shell的类型
Øcat /etc/groups:查看系统存在的所有用户组
2、系统目录结构
2.1 /root
根分区,只有root用户对此目录拥有写权限。
2.2 /bin
用户可执行文件,此目录包含二进制可执行文件以及所有用户的常用命令(如:ls , cp等)。
2.3 /sbin
系统可执行文件,此目录中的命令主要供系统管理员使用(如:iptables、reboot等)。
2.4 /etc
配置文件,包含所有应用程序的配置文件,也包含启动、关闭某个特定程序的脚本。
2.5 /dev
设备文件,包含设备文件(在Linux中,一切都被看做文件:终端设备、USB、磁盘等等都被看做文件)。
2.6 /proc
进程信息,所有系统进程的信息都包含在/proc目录中。
2.7 /var
变量文件,/var是一个可增长的目录,包含变量文件(如,/var/log系统日志、/var/mail邮件)。
2.8 /usr
用户程序,为用户应用程序存放可执行文件、源代码和文档。
2.9 /home
用户主目录,用于存放用户的私人文件。
2.10 /boot
启动加载文件,系统启动时需要加载的文件。
2.11 /lib
系统库文件,/bin和/sbin中的可执行文件需要/lib中库文件的支持,库文件通常以"ld"或"ld*.so"的形式命名。
2.12 /opt
可选应用,用于安装独立软件商的可选应用。
2.13 /mnt
挂载目录,系统管理员可用于临时挂载文件系统。
2.14 /media
可移动媒体设备,挂载可移动媒体设备。
2.15 /src
3、目录的基本操作
Øls命令:列出目录的内容
l语法:ls [选项] [目录或文件夹]
l颜色含义:
²蓝色:目录
²绿色:可执行文件
²红色:压缩文件
²浅蓝色:链接文件
²灰色:其他文件
Øcd命令:改变工作目录
l语法:cd [
directory ]
Øpwd命令:显示当前工作目录的绝对路径
l语法:pwd
Ømkdir命令:创建目录
语法:mkdir [选项] dirname
Ørmdir命令:删除空目录
l语法:rmdir [选项] dirname
4、文件的基本操作
Ø文件的移动:mv命令
l功能:为文件或目录改名或将文件或目录由一个目录移到另一个目录。
l语法:mv [选项]源文件或目录目标文件或目录
Ø文件的复制:cp命令
l功能:将给出的文件或目录拷贝到另一个文件或目录中。
l语法:cp [选项]源文件或目录目标文件或目录
Ø文件的删除:rm命令
l功能:删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下所有文件及子目录均删除。
l语法:rm [选项]文件...
5、文件操作权限
Ø每个文件或目录的操作权限都有三组,每组用三位表示:文件属主的读、写和执行权限;属主同组用户的读、写和执行权限;系统中其他用户的读、写和执行权限。
Øchmod命令:改变文件或目录的操作权限
l两种用法:一种是包含字母和操作符表达式的文字设定法,一种是包含数字的数字设定法。
l具体的权限:【1】可读r:4;【2】可写w:2;【3】可执行x:1。
6、更改文件或目录的属主/组
Ø文件与目录的归属是指文件与目录的所有者与所属的组。
Øchgrp命令:改变文件或目录所属的组。
l语法:chgrp [选项] group
filename
Øchown命令:改变文件或目录属主和属组。
l语法:chmod [选项]用户或组文件
三、文件管理
1、目录操作
Øcd切换目录
2、文件操作
Ø创建文件夹:mkdir
lmkdir文件夹名:创建当前目录下的文件夹
lmkdir a b c:同时创建多个并列文件夹
lmkdir -p /usr/local/zff创建指定路径下的文件夹(如果创建的文件夹的父目录不存在,连同父目录一块创建)
Ø删除文件夹:rmdir
lrmdir文件夹名:删除单个文件夹
lrmdir dirname1 dirname2 :删除多个文件夹
lrmdir /usr/local/dirname删除目录层级下的文件夹
lrmdir -p /usr/local/dirname删除带层级的全部目录
Ø创建文件:vi/touch
lvi/vim/touch file.txt:创建/编辑文件
Ø删除文件:rm -rf
lrm -rf filename
Ø文件查找:find——根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
lfind / -name "test":查找系统中以test命名的文件或文件夹
lfind /home -name a*.log -o -name b*:查找home目录下以a或b开头的文件
lfind /home -user root:查找home目录下属主为root的文件或文件夹
l按照文件的更改时间来查找文件,-n表示文件更改时间距现在n时间以内,+n表示文件更改时间距现在n时间以前
Ø查看文件
lcat:一次性查看文本,适用于文本内容比较少
²cat filename:一次性查看文本的全部内容
²cat filename1 filename2:一次性查看多个文本的内容
²cat -n filename:查看文本,并对输出的所有行编号
²cat -b filename:查看文本,并对输出的非空行编号
lmore:用于分页显示文本,适用于文本内容较多
²more -num filename:制定屏幕的行数
²more +num filename:从行号num开始显示
²more +/pattern filename:从字串(pattern)第一次出现行的前两行开始显示
²more -s filename:重复的空行压缩成一个空行
注:SPACE:显示接下来的k行文本
Q/q:退出
lless:用于分页显示文本,适用于文本内容较多
²less -N fileneme:显示每行的行号
²less -s filename:显示连续空行为一行
²less -i filename:忽略搜索时的大小写
²less -m filename:显示类似more命令的百分比
²less运行时可以输入的命令有:
u空白键:向下翻动一页
u[pagedown]:向下翻动一页
u[pageup]:向上翻动一页
u/字串:向下搜寻『字串』
u?字串:向上搜寻『字串』
un:重复前一个搜寻(与/或?有关)
uN:反向的重复前一个搜寻(与/或?有关)
uq:离开less这个程序
lhead:用于显示文件文字区块
²head filename:默认显示文件前10行
²head -v filename:显示文件名
²head -q filename:隐藏文件名
²head -n num filename:显示前num行文字
²head -n -num filename:显示除了文件最后num行外的所有内容
²head -c num filename:显示文件前num个字节的内容
²head -c -num filename:显示除了文件最后num个字节外的所有内容
ltail:用于显示文件文字区块
²tail filename:默认显示文件尾部10行
²tail -num filename/tail -n num filename:显示尾部num行
²tail -100f filename:动态显示最新100行内容
注:tail常被用来查看最新的日志信息,我们就可以用tail -f来实时查看日志信息。
lgrep:根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
²grep 'mysql' my.cnf:在my.cnf中查找含有mysql的字段
²grep -n 'mysql' my.cnf:在my.cnf中查找含有mysql的字段,同时显示出行号
lcut:选取命令,就是:将一段数据经过分析,取出我们想要的内容。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析。
²cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定File参数,cut命令将读取标准输入。必须指定-b、-c或-f标志之一。
²cut命令参数:
u-b:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了-n标志。
u-c:以字符为单位进行分割。
u-d:自定义分隔符,默认为制表符。
u-f:与-d一起使用,指定显示哪个区域。
u-n:取消分割多字节字符,仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。
²cut常用命令:
uhttp://www.cnblogs.com/dong008259/archive/2011/12/09/2282679.html
l注意:Linux中head、tail、grep、cut、wc、sort等命令
四、用户和用户组管理
1、用户管理
Ø新增用户
luseradd :添加用户
lpasswd :设置用户密码
Ø删除用户
luserdel :仅删除用户
luserdel -r :删除用户及用户的目录文件
Ø查看用户:cat
/etc/passwd
2、用户组管理
Ø添加用户组
lgroupadd :添加用户组
lpasswd :设置用户组密码
Ø删除用户组
lgroupdel
Ø设定用户组密码
lgpasswd
Ø取消用户组密码
lgpasswd -r
Ø添加用户组成员
lgpasswd -a :添加的要存在
Ø删除用户组成员
lgpasswd -d
Ø查看用户组
lcat /etc/group
五、系统管理
1、进程管理
Øps命令:Process Status,用来显示当前进程的状态,通过ps命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。
llinux上进程有5种状态:
²运行(正在运行或在运行队列中等待),状态码:R
²中断(休眠中,受阻,在等待某个条件的形成或接受到信号),状态码:S
²不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生),状态码:D
²僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放),状态码:Z
²停止(进程收到SIGSTOP,
SIGSTP, SIGTIN, SIGTOU信号后停止运行运行):T
lps [参数]
²a显示所有进程
²-A/-e显示所有进程
²c显示进程的真实名称
²f显示程序间的关系
²u指定用户的所有进程
²-au显示较详细的资讯
²-aux显示所有包含其他使用者的进程
²--lines<行数>每页显示的行数
lps常用命令:
²ps -A:显示所有进程信息
²ps - ef:显示所有进程信息,连同命令行
²ps u root:显示指定用户信息
²ps -ef | grep mysql:ps与grep组合用法,查找特定进程
²ps aux:列出目前所有的正在内存当中的程序
uUSER:该process所属的使用者
uPID:该process的编号
u%CPU:该process使用掉的CPU资源百分比
u%MEM:该process所占用的物理内存百分比
uVSZ:该process使用掉的虚拟内存量(Kbytes)
uRSS:该process占用的固定的内存量(Kbytes)
uTTY:该process是在哪个终端机上面运作,若与终端机无关,则显示?,另外,tty1-tty6是本机上面的登入者程序,若为pts/0等,则表示为由网络连接进主机的程序。
uSTAT:该程序目前的状态
uSTART:该process被触发启动的时间
uTIME:该process实际使用CPU运作的时间
uCOMMAND:该程序的实际指令
²根据CPU使用来升序排序:ps aux --sort -pcpu
²根据内存使用来升序排序:ps aux --sort -pmem
²ps与head、less等组合:ps aux |
head -n 20、ps aux | less
²如果想要查看现在有谁登入了服务器:ps -eo pid,user,args,参数-e显示所有进程信息,-o参数控制输出。Pid,User和Args参数显示PID,运行应用的用户和该应用。
²我们可以将ps命令和watch命令结合起来,动态显示系统进程信息。这么种情况:
watch -n 1 ‘ps -aux --sort -pmem, -pcpu,通过CPU和内存的使用率来筛选进程,并且希望结果能够每秒刷新一次。这样与top相比,使用ps的好处是你能够定义显示的字段,你能够选择你想查看的字段。
Øtop命令:实时显示系统中各个进程的资源占用状况,包括进程ID、内存占用率、CPU占用率等
ltop
[参数]
²-d
<时间>:设置间隔时间
²-u <用户名>:指定用户名
²-p <进程号>:指定进程
²-n <次数>:循环显示的次数
ltop常用命令:
²top
²top -d 5 / top -u root /top -p 22 /top -n 10
²top交互命令:
uk终止一个进程
uq退出程序
us改变两次刷新之间的延迟时间(单位为s)。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5 s
uM根据驻留内存大小进行排序
uP根据CPU使用百分比大小进行排序
uT根据时间/累计时间进行排序
Økill命令:结束进程
lkill pid:结束进程
lkill -9 pid:强制结束进程
Ønetstat:用于显示各种网络相关信息
netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
lnetstat命令常用参数:
²-a:显示所有选项,默认不显示LISTEN相关
²-t:仅显示tcp相关选项
²-u:仅显示udp相关选项
²-n:拒绝显示别名,能显示数字的全部转化成数字。
²-l:仅列出有在Listen (监听)的服务状态
²-p:显示建立相关链接的程序名
²-s:按各个协议进行统计
²-c:每隔一个固定时间,执行该netstat命令。
²提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
lnetstat常用命令:
²列出所有端口:netstat -a
²列出所有tcp/udp端口:netstat -at /netstat -ut
²只显示监听端口:netstat -l
²netstat输出中显示PID和进程名称:netstat-p
²持续输出netstat信息:netstat -c :默认每秒更新1次
²找出程序运行的端口:netstat -ap | grep ssh
²找出运行在指定端口的进程:netstat -apn |grep 80/netstat -apn | grep ':80'
l举例场景:服务器上Tomcat 8080端口起不来,老提示端口已经被占用
²第一步:ps -aux | grep tomcat
发现并没有8080端口的Tomcat进程。
²第二步:使用命令:netstat –apn
查看所有的进程和端口使用情况:最后一栏是PID/Program
name,发现8080端口被PID为9658的Java进程占用。
²第三步:使用:ps -aux | grep java或者直接使用:ps -aux | grep pid查看,就可以明确知道8080端口是被哪个程序占用了!最后判断是否使用KILL命令干掉!参见:http://www.cnblogs.com/benio/archive/2010/09/15/1826728.html
lnetstat参见:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
Øsync:强制将内存中的文件缓冲内容写到磁盘
lLinux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写入磁盘。只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。
llinux系统为了提高读写磁盘的效率,会先将数据放在一块buffer中。在写磁盘时并不是立即将数据写到磁盘中,而是先写入这块buffer中了。此时如果重启系统,就可能造成数据丢失。sync命令用来flush文件系统buffer,这样数据才会真正的写到磁盘中,并且buffer才能够释放出来,flush就是用来清空buffer。sync命令会强制将数据写入磁盘中,并释放该数据对应的buffer,所以常常会在写磁盘后输入sync命令来将数据真正的写入磁盘。如果不去手动的输入sync命令来真正的去写磁盘,linux系统也会周期性的去sync数据。
2、磁盘管理
Ø磁盘管理:df查看磁盘使用情况,du查看目录/文件大小
ldf:用来检查linux服务器的文件系统的磁盘空间占用情况。我们可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
²df -a:显示所有文件系统的磁盘使用情况
²df -h:以人类易读的格式输出
²df -h /dev/sda1:显示特定文件系统已使用的空间
²df -T:显示所有文件系统的类型
²df -k:按块大小输出文件系统磁盘使用情况
²df -h --total:显示所有文件系统的磁盘使用情况汇总
²df -t ext4:显示特定文件系统类型的信息
²df -x ext4:用来在输出中排出某些文件系统类型
²参考:https://linux.cn/article-6466-1.html
ldu:检查目录或者文件所占空间
du与df命令不同的不同du命令是查看当前指定文件或目录(会递归显示子目录)占用磁盘空间大小。
²du all.log:显示指定文件所占空间
²du /zff/installpkg:查看指定目录的所占空间
²du -ah log:文件和目录都显示
²du log1.tar.gz log2.tar.gz:显示多个文件所占空间
²du -c /var/log /usr/local:显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
²du -s:只显示总和的大小
²du | sort -nr | more:按照空间大小排序
²du -h --max-depth=1:输出当前目录下各个子目录所使用的空间