# 部分可能会查询的常用指令

该笔记中给出 [选项] 仅为部分常用选项

# 杂项

init [0123456] 切换运行级别

man [命令或配置文件] 获取相关帮助信息

help [命令] 查看命令的帮助信息

clear 清屏

Ctrl+C 终止指令

ps [选项] 查看进程。a 显示当前终端所有进程,u 以用户的格式显示进程,x 显示后台进程运行的参数

top [选项] 动态查看进程。P 以 CPU 使用率排序 (默认),M 以内存使用率排序,N 以 PID 排序,q 退出。

netstat [选项] 查看系统网络情况,an 按一定顺序排列输出,p 显示哪个进程在调用

chkconfig 给每个服务的各个运行级别设置自动启动 / 关闭

ls -i:PORT 检查 PORT 端口号占用

# 文件目录类

pwd 显示当前工作目录的绝对路径

ls [选项] [目录或是文件] -a 显示当前目录所有的文件和目录,-l 使之纵向排布

cd [参数] 表示 change directory,切换目录。~ 回到自己的家目录 … 回到上一级目录

mkdir [选项] 要创建的目录 创建目录,-p 创建多级目录

rmdir [选项] 要删除的空目录 删除一个空目录

rm -rf 要删除的目录 删除一个非空的目录。-r 为递归删除整个文件夹,-f 为强制删除不提示

touch 文件名称 创建一个空文件

cp [选项] 源文件 指定目录 拷贝源文件到指定目录。-r 递归复制整个文件夹

\cp 为强制拷贝,覆盖同名文件,并且不提示

mv 旧文件名 新文件名 给当前路径下的文件重命名

mv 文件名 指定目录 将当前目录下文件移动到指定目录

cat [选项] 文件名 以只读的方式打开文件。-n 为显示行号

more 文件名 以全屏方式按页显示文本内容,空格为下一页,回车为下一行,q 表示离开 Ctrl+F 向下滚动一屏,Ctrl+B 返回上一屏,= 输出当前的行号,:f 输出文件名和当前的行号

less 类似于 more,但仅加载需要显示的内容,查看大型文件更有效率。pageup 上一页,pagedown 下一页。/ 关键字 查找内容。n 向下查找,N 向上查找

> 输出重定向 会将原来的文件的内容覆盖。如 ll >a.txt 若无该文件,则会创建

>> 追加内容 会在原来的文件中追加内容

echo [选项] “内容” 输出内容,可以配合 > 或 >> 将内容写入文件,$PATH 可以输出环境变量的路径

head [选项] 文件 查看文件的前 10 行 (默认)。-n 5 可以查看前 5 行

tail [选项] 文件 查看文件尾,-f 实时追踪该文档的所有更新

ln -s [源文件或目录] [软链接名称] 给源文件创建一个软链接 (快捷方式)

history [指令个数] 查看执行过的指令,! 行号,执行该行号指令

# 时间日期类

date [“+ 选项”] 显示当前日期,% Y 显示当前年份,% m 月份,% d 日,% H 时,% M 分,% S 秒

date -s 字符串时间 设置时间,如 date -s "2020-12-13 21:46:06"

cal [年份] 显示当前日历或显示某一年日历

# 搜索查找类

*find [搜索范围] [选项] 查找文件,-name 按文件名搜索,-user 按文件拥有者查找,-size [+ 或 - 大小] 按文件大小查找,-name . 后缀 使用通配符查找

locate [文件] 查找文件,使用该指令前须使用 updatedb 创建 locate 数据库

grep [选项] 查找内容 源文件 过滤查找,-n 显示匹配行及行号,-i 忽略字母大小写

| 管道符,表示将前一个命令的处理结果输出传递给后面的命令处理

操作案例:cat hello.txt | grep -n xxx

# 压缩和解压缩类

gzip 文件 将文件压缩为.gz (压缩时会删除源文件)*

gunzip 文件.gz 将 gz 文件解压缩

zip [选项] 压缩文件名 源文件 / 目录 压缩为.zip,-r 递归压缩 (压缩时保留源文件)

unzip [选项] 指定目录 源文件.zip 将源文件.zip 解压到指定目录

tar [选项] *.tar.gz [源文件 1 源文件 2] 打包指令,将源文件压缩成 *.tar.gz 文件。-c 产生打包文件,-v 显示详细信息,-f 指定压缩后的文件名,-z 打包同时压缩,-x 解包.tar 文件。注:zcvf (打包) 或 zxvf (解包) 通常同时使用

# Linux 根目录下部分文件及其存储内容简单介绍

加粗高亮为重要文件;高亮不加粗为操作难度较高的内核文件,不建议修改。

boot // 存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件

bin //Binary 的缩写,这个目录存放着最经常使用的命令

root // 该目录为系统管理员,也称作超级权限者的用户主目录

etc // 所有的系统管理所需要的配置文件和子目录

home // 存放普通用户的主目录,在 Linux 中每个用户都又一个自己的目录,一般该目录名以用户的账号命名

usr // 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 Windows 下的 program files 目录

media //Linux 系统会自动识别一些设备,例如 U 盘、光驱等,当识别后,Linux 会把识别的设备挂载到这个目录

mnt // 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载到 /mnt/ 上,然后进入该目录就可以查看里面的内容了。

usr/local // 这是另一个给主机额外安装软件所安装的目录。一般是通过编译码方式安装的程序。

var // 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。

proc // 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

srv //service 缩写,该目录存放一些服务启动之后需要提取的数据

sys // 这是 linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs。

dev // 类似于 Windows 的设备管理器,把所有的硬件用文件的形式存储。

lib // 系统开机所需要最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。

lib64 // 库文件

opt // 这是给主机额外安装软件所摆放的目录。如安装 ORACLE 数据库就可放到该目录下。默认为空

sbin //Super User Binary,这里存放的是系统管理员使用的系统管理程序

selinux //SELinux 是一种安全子系统,它能控制程序只能访问特定文件。

tmp // 这个目录是用来存放一些临时文件的

lost+found // 这个目录一般情况下是空,当系统非法关机后,这里就存放了一些文件。

重点:

1.Linux 的目录中有且只有一个根目录。是 /

2.Linux 的各个目录存放的内容是规划好的,不要乱放文件。

3.Linux 是以文件的形式管理设备的,因此 Liux 系统,一切皆文件。

4.Linux 的各个文件目录下存放什么内容,必须有一个认识。

# 使用 XSHELL 和 XFTP

1. 需要打开 Linux 的 SSHD 服务。服务器会开放默认端口 22 以供远程登录。

SSHD 开启方法:

Linux 系统下,使用 root 账户

setup

System servers

XSHELL 设置:协议使用 SSH 协议,端口为默认端口 22,地址在服务器使用 ifconfig 查询

XFTP 设置:协议使用 SFTP,端口为默认端口 22,地址同上

# Vi 和 Vim 编辑器

Vi 和 Vim 的三种常见模式:

1. 正常模式

可使用快捷键

2. 编辑模式 / 插入模式

正常模式下,按下 i,Io,O,a,A,r,R 等任何一个字母后进入编辑模式。

3. 命令行模式

插入模式下按 Esc 进入正常模式,按:或 / 进入命令行模式

Vi 和 Vim 常用的快捷键(更多自行查询)

yy,复制当前行,并向下粘贴。5yy 即粘贴 5 行。

dd,删除当前行。5dd 即删除当前行与向下的 4 行。

命令行下 / 关键字,查找第一个关键字,输入 n 查找下一个。

命令行下 set nu 开启行号,set nonu 关闭行号。

gg 前往首行,G 前往末行。注意这些都是在正常模式下的快捷键。

输入 u 撤销编辑内容到上次正常模式。

正常模式下,行号,shift+g 跳转到该行号

# Linux 的关机、重启指令与用户的登录与注销

shutdown -h now 表示立即关机

shutdown -h 1 表示 1 分钟后关机

shutdown -r now 表示立即重启

halt 停机,效果等价于关机

reboot 重启系统

sync 把内存数据同步到磁盘上(建议关机或重启前进行数据保存)

Linux 系统下通常不使用 root 账户登录,而是使用普通用户登录,再使用 su - 用户名进行登录

使用 logout 注销当前账户 logout 在图形运行级别无效,在运行级别 3 下有效

# 用户管理

# 部分指令

1.Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

2.Linux 的用户需要至少属于一个组。

添加用户 ([] 代表选填):

useradd [] 用户名

此时会在 home 下创建(用户名)家目录

若不指定组则自动创建同名组,并将用户归属于该组

使用 user -g 组名 用户名 创建一个用户,并给他指定组

若组不存在,则创建该组

使用 useradd -d 指定目录 用户名 来指定用户的家目录创建位置

使用 passwd 用户名 给用户设置密码 注:设置密码过于简单会失败

使用 userdel 用户名 来删除用户,该命令仅删除用户,不删除用户家目录

使用 userdel -r 用户名 删除用户及其家目录

使用 id 用户名 来查询用户信息

获得信息 uid gid groups,为用户 id,组 id,和其所属组。

使用 su - 用户名 可以切换用户

使用 exit 可以退回到原用户

使用 whoami 可以查看当前使用的用户

# 用户组

使用 groupadd 组名 来创建一个组

使用 groupdel 组名 来删除一个组

使用 usermod -g 组名 用户名 修改用户的组

# 用户信息和组信息的配置文件

用户配置文件 /etc/passwd

组配置文件 /etc/group

口令配置文件 (加密) /etc/shadow

# 运行级别 (共 7 级)

0:关机

1:单用户 (找回丢失密码)

2:多用户无网络服务

3:多用户有网络服务

4:暂空

5:图形界面

6:重启

如何找回丢失的 root 密码:

1. 进入到单用户模式(单用户模式登录不需要输入密码)

2. 修改 root 密码

在选择内核时输入 e,进入 GRUB 引导,选择 kernel 行,切换运行级别为 1,随后按 b

# 组管理和权限管理

# 组管理

文件:

所有者 (拥有者)

所在组 (拥有组)

其他组

ls -ahl 查看文件所有者

chown 用户名:组名 文件名 修改文件所有者、所有组,: 组名可以不改,-R 递归修改

chgrp 组名 文件名 修改文件所在组,-R 递归修改

usermod -g 组名 用户名 改变用户的组

usermod -d 目录名 用户名 改变该用户的初始登录目录

# 权限管理 ==(重要!!)==

查看一个文件时:

-rw-r–r--. 1 root root 6 12 月 13 22:34 ok.txt

其中第 0 位 - 表示文件类型:- 普通文件,d: 目录,l: 软链接,c: 字符设备【键盘,鼠标】,b: 块文件【硬盘】

第 1-3 位中 rw - 表示文件所有者拥有的权限,r 为读,w 为写,x 为执行,- 为无权限

第 4-6 位中 r–表示文件所在组的用户的权限,同上

第 7-9 位中 r–表示文件的其他组的用户权限,同上

1若为文件,表示硬链接,若为目录,则表示该目录中子目录的个数

第一个 root 为所有者,第二个 root 为所有组

6 表示文件大小,如果是目录,则文件大小为 4096

12 月 13 22:34 表示文件最后的修改时间

对文件有 w 权限,不代表能删除文件,必须有对其目录 w 的权限

w 对于目录表示可以在目录内创建,删除,重命名目录

x 对于目录表示可以进入该目录

chmod 修改文件或目录的权限

u: 所有者,g: 所有组,o: 其他人,a: 所有人 (ugo 总和)

user group other all

使用 +、-、= 变更权限,例:

chmod u=rwx,g=rx,o=x 文件名 / 目录名

chmod o+w 文件名 / 目录名

chmod a-x 文件名 / 目录名

也可以使用数字更改权限

r=4 w=2 x=1 rwx=4+2+1=7

如:chmod 740 file 即给所有者 rwx,给所有组 r–,给其他组 —

# crond 任务调度

crontab [选项]

-e 编辑 crontab 定时任务

-l 查询 crontab 任务

-r 删除当前用户所有的 crontab 任务

service crond restart 重启任务调度

crontab -e 进入编辑界面

***/1 * * * * ls -l /etc/ >> /temp/to.txt** 每小时的每分钟执行 ls -l /etc/ >> /tmp/to.txt 命令

== 第一个 一小时当中的第几分钟 范围 0-59==*

== 第二个 一天当中的第几个小时 范围 0-23==*

== 第三个 一个月当中的第几天 范围 1-31==*

== 第四个 一年当中的第几个月 范围 1-12==*

== 第五个 一周当中的星期几 范围 0-7 (0 和 7 都代表星期日)==*

* 代表任何时间

, 代表不连续的时间,如 "0 8,12,16 * * * 命令", 代表每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令

- 代表连续的时间范围,如 "0 5 * * 1-6 命令", 代表周一到周六的 5 点 0 分执行命令

*/n 代表每个多久执行一次,如 "*/10 * * * * 命令", 代表每隔 10 分钟就执行一遍命令

# Linux 磁盘分区与挂载

分区方式包含:

1.mbr 分区 (传统)

最多支持 4 个主分区

系统智能安装在主分区

扩展分区要占一个主分区

MBR 最大只支持 2TB,但拥有最好的兼容性

2.gpt 分区

支持无限多个主分区 (但操作系统可能限制,比如 Windows 下最多 128 个分区)

最大支持 18EB (18*1024*1024TB) 的大容量

windows7 64 位以后支持 gpt

Linux 的分区是挂载 (mount) 到目录上的,卸载为 (unmount)。

Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘。

对于 IDE 硬盘,驱动器标识符为 "hdx~",其中 "hd" 表明分区所在设备的类型,这里指 IDE 硬盘,“x"为盘号,(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),”~" 代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。

对于 SCSI 硬盘则标识为 "sdx~",SCSI 硬盘使用 "sd" 来表示分区所在设备的类型的,其余则和 IDE 硬盘一样

lsblk -f 查看系统的分区和挂载的情况

# yum

yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

# Shell**(重要!!)**

Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。

# Shell 脚本格式

1. 脚本以 #!/bin/bash 开头

2. 脚本需要有可执行权限

3. 可以用 #来写注释

4. 多行注释开头 :<<! 结尾 !

5.shell 变量定义时不要写空格

# shell 的变量

1.Linux Shell 中的变量分为,系统变量和用户自定义变量。

2. 系统变量:HOMEHOME、PWD、SHELLSHELL、USER 等等,比如 echo $HOME

3. 显示当前 shell 中所有变量:set

4. 使用变量时前面要加 $

# shell 变量的定义

基本语法:

1. 定义变量:变量 = 值

2. 撤销变量:unset 变量

3. 声明静态变量:readonly 变量,注意:不能 unset

4. 可以把一个变量提升为全局变量,可供其他 shell 程序使用

变量定义规则:

1. 变量名称可以由字母、数字与下划线组成,但不能以数字开头

2. 等号两侧不能有空格

3. 变量名称一般习惯为大写

将命令的返回值赋给变量

1.A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量 A

2.A=$(ls -la) 等价于反引号

设置环境变量语法与注意

1.export 变量名 = 变量值 将 shell 变量输出为环境变量

2.source 配置文件 让修改后的配置信息立即生效 (source /etc/profile)

3.echo $ 变量名 查询环境变量的值

注意:在输出 JAVA_HOME 环境变量前,需要让其生效