一、基本概念与操作
1.Linux简介
Linux是一套操作系统系统。免费、开源、高效、稳定,处理高并发能力很强。目前大量的企业级应用都是部署到Linux/Unix服务器上运行。
Linux的历史:
- Unix。最早的多用户、多任务操作系统。属于分时操作系统。它在创建互联网、计算机网络或客户端/服务器模型方面发挥着非常重要的作用。
- GNU计划。建立一个自由、开放的Unix操作系统。(GNU’s Not Unix的递归缩写)。其内容软件以GPL方式发布(GNU General Public License)。GPL包含三个方面的自由:即运行此程序、再复制、改进和公开发布改进的自由。
- 1991年,芬兰的业余计算机爱好者Linus Torvalds编写了一款类似Minix的系统(基于微内核架构的类Unix操作系统)被ftp管理员命名为Linux 加入到自由软件基金的GNU计划中。
所以Linux是一套基于Linux内核的类Unix操作系统。
发行版本:Ubuntu、CentOS、RedHat、SuSE、Debian
2.VIM的三个模式
- 一般模式:VIM的默认模式,移动游标可以查看内容。其他两种模式按ESC进入一般模式。
- 编辑模式:按下 i / a等键进入,可以对文本进行编辑。
- 命令行模式:按下:后进入,用于保存和退出等操作。
3.常用快捷键
- Tab:命令和文件名自动补全
- Ctrl+c:中断正在运行的程序
- Ctrl+d:结束键盘输入
- vim快捷键:yy拷贝、dd删除、/关键字(命令行)查找
4.关机、重启
- who。使用who命令查看有没有其他用户在线
- sync。为加快磁盘读写速度,内存中的文件不会立即同步到磁盘,因此关机先需要先进行sync同步。
- shutdown。shutdown [-t seconds] [-rkncfF] time [message]
- -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
- -r : 关机后重新开机。
- -h : 关机后停机。
- -c : 取消在进行中的关机动作。
- reboot。重启指令。
- halt。效果等价于关机。
- logout。注销。在图形运行级别无效,在运行级别3才有效。
5.sudo
sudo 允许一般用户使用 root 可执行的命令,不过只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。
6.指令运行级别
运行级别:
- 0:关机
- 1:单用户,root权限,用于系统维护,禁止远程登录。
- 2:多用户状态无网络服务。多用户状态,不支持网络。
- 3:多用户有网络服务。多用户状态,登录后进入控制台命令行模式。
- 4:保留未使用。
- 5:图形界面。登录后进入图形模式。
- 6:系统重启。
常用运行级别是3和5。配置文件 /etc/inittab,可以修改默认运行级别。
使用 init [012356] 指令切换运行级别。
找回root密码的操作:开机等待时间中切换到单用户模式,然后修改root密码即可。因为单用户模式下不需要root密码就可以登录。(前提是可以接触到主机)。
7.帮助指令
- man [命令或配置文件] :获得帮助信息
- help 命令:获得shell内置命令的帮助信息
二、文件系统
1.概述
在Linux世界里,一切皆文件。即所有被操作系统管理的资源,都是一个文件。如网络接口卡、磁盘驱动器、打印机、IO设备、普通文件或目录等。
2.文件类型
- 普通文件。用来在辅助存储设备(如磁盘)上存储信息和数据。如程序代码、可执行程序、图片、声音、图像等
- 目录文件。用于标识和管理系统中的文件。如/root
- 链接文件。类似windows快捷方式,用于不同目录下的文件共享。
- 设备文件。用来访问硬件设备。如键盘、硬盘、打印机。
- 命名管道。Linux中,进程之间的通信可以通过该文件完成。
3.目录结构
Linux文件系统的结构层次分明,只有一个根目录,根目录下有一些目录文件,每个目录文件中存放对应文件。
常见目录:
- /bin: 【重要】存放二进制可执行文件(ls、cat、mkdir等),存放常使用的命令;
- /sbin: 存放系统管理员使用的系统管理程序,只有root可以访问。如ifconfig等;
- /home: 【重要】存放普通用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
- /root: 【重要】超级用户(系统管理员)的主目录;
- /lost+found: 这个目录平时是空的,系统非正常关机后会存放一些文件。
- /lib : 存放着和系统运行相关的库文件 ;
- /etc: 【重要】存放系统管理和配置文件;
- /usr : 【重要】用于存放系统应用程序和文件,类似于windows中的program files目录;
- /boot: 【重要】存放用于系统引导时使用的各种文件;
- /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
- /dev: 用于存放设备文件,将所有硬件以文件形式存储;
- /media: 识别设备如U盘光驱等之后,Linux会将识别的设备挂载到这个目录下;
- /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统(如虚拟机与母机的共享文件夹);
- /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
- /usr/local : 另一个给主机额外安装软件所安装的目录, 一般通过编译源码的方式安装的程序。
- /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件等;
- /proc: 虚拟文件系统目录,是系统内存的映射,可访问这个目录来获取系统信息。与/srv,/sys目录为linux内核相关目录,不要轻易改动。
- /selinux: 安全子系统。控制程序只能访问特定文件。
三、常用指令
1.用户与用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
Linux的用户至少需要属于一个组。
相关文件:
- 用户配置文件放在 /etc/passwd。
- 组配置文件放在 /etc/group。
- 口令配置文件放在 /etc/shadow。
相关命令:
- useradd 选项 用户名:添加用户
- userdel 选项 用户名:删除用户
- usermod 选项 用户名:修改用户
- passwd 用户名:更改或创建用户的密码
- passwd -S 用户名:显示用户账号密码信息
- passwd -d 用户名: 清除用户密码
- id 用户名:查询用户的id和组id
- groupadd 选项 用户组:增加一个新的用户组
- groupdel 用户组:要删除一个已有的用户组
- groupmod 选项 用户组 : 修改用户组的属性
- su - 用户名:切换用户。使用exit退出到上一个用户。
2.文件目录指令
2.1 目录操作指令
查:
- pwd: 显示当前工作目录的绝对路径。
- ls 选项 目录或文件:显示目录详细信息。
- -a 显示当前目录所有文件和目录。
- -l 以列表形式显示信息。ls -l 等价于ll
- find 目录 选项:查找目录
- find . :列出当前目录及其子目录下所有文件和文件夹
- find /home -name “*.txt” :查找指定文件夹下的txt文件。 -iname忽略大小写。
- find /home -user userName:查找指定用户的文件。
- find /home -size +20M:查找大小超过一定范围的文件。
- cd:切换目录。
- cd ../:返回上一级
- cd /:切换到根目录
- cd ~:切换到用户主目录
- cd - :切换到上一个操作所在的目录
增:
- mkdir 目录名称:增加目录
删:
- rm -rf 目录:删除目录。rm不仅可以删除目录,也可以删除其他文件或压缩包。 无论删除任何目录或文件,都可以直接使用 rm -rf 目录/文件/压缩包
改:
- cp -r 目录名称 目标位置:拷贝目录,-r表示递归拷贝。cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归。
- mv 目录名称 新目录名称:修改目录名。mv语法还可以对文件、压缩包进行重命名。
- mv 目录名称 目录新位置:移动目录的位置(剪切)。也可以对文件、压缩包进行剪切。
2.2 文件操作指令
- cat/more/less/tail 文件:文件查看(查)。
- cat [-n]:查看文件内容,以只读方式查看。-n:显示行号
- more:可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
- less:可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
- tail -f 10:查看文件的后10行,Ctrl+C结束。-f 表示实时监控文件变化。
- head:查看文件前n行,Ctrl+C结束
- touch 文件 :创建空文件(增)
- rm-rf 文件:删除文件(删)
- vim 文件:修改文件内容(改)
- 指令 > 文件:将指令的执行结果添加到文件中,会将原来的文件覆盖。(改)
- 指令 » 文件:不会覆盖原来的内容,追加到尾部。(改)
3 压缩文件指令
3.1打包并压缩文件
Linux中的打包文件一般是以.tar结尾的,压缩的文件一般是以.gz结尾的。一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz
- tar -zcvf 打包压缩后的文件名 要打包压缩的文件
- z:调用gzip压缩命令进行压缩
- c:打包文件
- v:显示运行过程
- f:指定文件名
3.2解压文件
- tar -xvf 压缩文件 -C 解压目录
- x:代表解压
- C:代表指定解压目录
4.权限管理指令
Linux每个文件都拥有特定的权限、所属的用户和所属组。权限是操作系统用来限制资源访问的机制,一般分为读(readable)、写(writable)和执行(excutable)。分别对应文件的所有者(owner),所在组(group)和其他组(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
例:使用 ls -ahl 指令可以查看当前目录下的所有文件的具体信息。
drwxr-xr-x. 1 root root 104 3月 19 00:52 test
其中d代表文件类型,rwx代表所有者权限,中间r-x为所在组权限,右边r-x为其他组权限。数字如果是目录则代表其下的子目录数量(其中 . 和 .. 都算作子目录),是文件则代表硬链接的个数。后面依次为用户名、用户组、文件大小、最后修改时间和文件/目录名。
文件类型:
- d:代表目录
- -:代表文件
- l:代表软链接
- c:字符设备(键盘,鼠标)
- b:块文件(硬盘)
文件权限:
- r:读(readable),可以用4表示。可以使用cat查看文件内容。
- w:写(writable),可以用2表示。可以修改文件内容。
- x:执行(excutable),可以用1表示。可以将其运行为二进制文件。
目录权限:
- r:可以查看目录下的列表。
- w:可以创建和删除目录下的文件。
- x:可以使用cd指令进入目录。
权限修改指令:
- chown 用户名 文件名:修改文件所有者,默认为文件创建者。-R可以递归地对一个目录下的所有文件修改所有者。
- chgrp 组名 文件名:可以修改文件所在组,默认为文件创建者所在组。
- chmod 权限设置 文件名:修改文件权限。例:
- 通过=+-变更权限,chmod u=rwx,g+w,o-x test.txt
- 通过数字变更权限,chmod 754 aaa.txt
5.任务调度指令
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
- 系统工作:有些重要的工作必须周而复始的执行。如扫描病毒。
- 个别用户工作:个别用户希望执行的程序。如MySQL数据库备份。
对于简单任务,可以直接在crontab指令中加入定时任务,复杂的任务需要编写shell脚本。
基本语法:
- crontab 选项:
- -e:编辑定时任务
- -l:查询定时任务
- -r:删除当前用户的所有crontab任务。
- 调度文件:
- 时间:五个占位符依次表示 分钟、小时、日期、月份、星期几
- 命令:在时间后面增加定时要执行的命令。
6.磁盘管理指令
磁盘分区方式:
- mbr分区:最多支持四个主分区,系统只能装在主分区,扩展分区要占一个主分区。
- gpt分区:支持无限个主分区(操作系统可能限制,如windows128),最大支持18EB的大容量(1EB=1024PB),windows7 64位以后支持gpt。
Linux分区原理:将磁盘上的分区挂载到一个目录上,要载入一个分区将使它的存储空间在一个目录下获得。
相关指令:
- lsblk [-f] :查看系统的分区和挂载情况。
- df -lh:查询系统整体磁盘使用情况。
- du -sach –max-depth=1 目录:查询指定目录的磁盘占用情况。
- -s:指定目录占用大小汇总
- -h:带计量单位
- -a:含文件
- -c:列出明细的同时,增加汇总值
- –max-depth=1:子目录深度
-
ls -l /home grep “^-“ wc -l :统计/home文件夹下文件的个数。 -
ls -lR /home grep “^d” wc -l :统计/home文件夹及其子文件夹中的目录个数。 - tree:树状显示目录结构。如果没有该指令,使用yum install tree安装tree指令。
7.网络通信指令
- ping 目的地址:查看与某台机器的连接情况。
- ifconfig:查看当前系统的网卡信息。
-
netstat -anp:查看进程的网络服务。常与 grep xxx 配合使用,查看特定进程的网络服务。
8.进程管理指令
- ps -aux:查看系统所有进程的状态。状态栏 S表示睡眠、s表示该进程是会话的先导进程、R表示正在运行、D表示短暂等待、Z表示僵死进程、T表示跟踪或者被停止等。
-
常用: ps -aux grep redis ,指查看包括redis字符串的进程。
-
- ps -ef :以全格式显示当前所有进程,可以查看进程的父进程。PID表示进程ID,PPID表示父进程ID。
- kill -9 进程号PID:强制终止进程。
- pstree -p/u:显示进程树。p表示显示进程PID,u表示显示
- top 选项:实时显示进程信息。
- -d 秒数:指定top命令每隔几秒更新,默认是3秒。
- -i:不显示闲置或僵死进程。
- -p:通过指定监控进程ID来仅仅监控某个进程的状态。
服务管理:服务是运行在后台的进程,通常都会监听某个端口,等待其他程序的请求,又称为守护进程。
- service 服务名 [start/stop/restart/reload/status]:对服务进行管理,临时生效。如:关闭防火墙:service iptables stop。
- chkconfig :为各个服务的各个运行级别设置/关闭自启动。
- –list:列出服务的运行级别自启动设置。
-
grep 服务名:筛选对应服务的信息。或直接 chkconfig 服务名。 - –level 运行级别 服务名 on/off:在指定运行级别下开启/关闭服务。
- setup:系统配置和系统服务。或使用 ls -l /etc/init.d/服务名
其他:
- 在CentOS7以后,service指令被systemctl指令所取代。
- 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程会被init进程(进程号为1)所收养。
- 僵死进程:一个进程执行了exit系统调用退出,而其父进程并没有为它收尸(调用wait或waitpid来获得它的结束状态)的进程。由于系统所能使用的进程号是有限的,如果产生大量僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程。解决:将其父进程杀死,僵死进程会成为孤儿进程,从而释放其占有的资源。
9.软件包管理
1.RPM
RedHat Package Manager类似于windows的setup.exe,很多Linux发行版本中都有采用(suse,redhat,centos等)。
指令:rpm
- -qa:查询所有软件包。
- -qi 软件包名:查询软件包的具体信息。如版本、安装日期等。
- -ql 软件包名:查询软件包中的文件。
- -qf 文件路径:查询文件所属的软件包。
- -e 软件包名:卸载软件包。–nodeps 忽略依赖强制删除。
- -ivh 软件包全路径名称:安装软件包。
2.YUM
Yum是一个Shell前端软件包管理器。能够从指定的服务器下载RPM包并安装,可自动处理依赖性关系,并且以此安装所有依赖的软件包。
指令:
-
yum list grep 软件名:查看yum服务器是否有需要安装的软件 - yum install 软件名:下载安装。默认安装最新版本。
10.其他常用指令
- echo 内容:输出内容到控制台。如: echo $PATH 输出环境变量。
- ln -s 原文件或目录 软链接名:类似于创建快捷方式。
- history 10:显示最近使用过的10个指令。
- 时间相关:
- date 字符串:按指定形式查看时间。
- date -s 字符串时间:设置系统时间。
- cal :显示日历。
- grep -n/i 要搜索的字符串 要搜索的文件 –color: 搜索命令,-n表示显示行号,-i表示忽略大小写, –color代表高亮显示。
-
:管道指令。管道是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管道。
如果遗忘某些命令可以通过以下工具网站快速查找。