1. 括号中的内容为备注
Linux目录结构
| 目录 | 描述 |
|---|---|
| / | 根目录 |
| /bin | (binaries)存放二进制可执行文件 |
| /sbin | (super user binaries)存放二进制可执行文件,只有root才能访问 |
| /etc | (etcetera)存放系统配置文件 |
| /usr | (unix shared resources)用于存放共享的系统资源 |
| /home | 存放用户文件的根目录 |
| /root | 超级用户目录 |
| /dev | (devices)用于存放设备文件 |
| /lib | (library)存放跟文件系统中的程序运行所需要的共享库及内核模块 |
| /mnt | (mount)系统管理员安装临时文件系统的安装点 |
| /boot | 存放用于系统引导时使用的各种文件 |
| /tmp | (temporary)用于存放各种临时文件 |
| /var | (variable)用于存放运行时需要改变数据的文件 |
命令基本格式
- 命令格式
命令 [option] [参数]
- 多个option时可以简化写在一起, 一些option可以简写, 例如
--all简写为-a
- 命令提示符
例如:
【root@localhost~】#
root表示当前登入用户localhost为当前主机名~当前所在目录#用户提示符;#表示超级用户;$表示普通用户;
帮助命令
1. man
全屏显示在线帮助, 按q退出, 上下键移动;
格式: man 命令, 进入在线帮助页面后:
-
输入 ? 键,向前查找,如 ?-h ,将会搜索含有“-h”的行
-
输入 / 键,向后查找,如 /-k ,将会向后搜索“-k”的行
-
按 N或者n(下一个)来进行上一个下一个相关匹配项查看。
-
man手册存放的位置 可以通过manpath命令来查看manpage的位置
-
man手册入口
1 用户指令 2 系统 3 程序库 4 设备 5 文件系统 6 游戏 7 杂项 8 系统指令 9 内核指令 一般用到的项为:1,5,8
常用:
man 1 passwd //在入口为用户指令去查询passwd的帮助文档 man 5 passwd //在入口为文件系统去查询passwd的帮助文档
2. help
- 内部命令的帮助文档, 例如
help cd --help选项, 例如rm --help
3. info
-
和man功能类似,都加详细,有不同主题之间的中转功能, 按q退出
-
例如
info cd -
一般用help ,--help,足够man来补充,info用的很少
whereis/which/whois/whatis
1. whereis
whereis命令只能用于搜索二进制文件(-b)、源代码文件(-s)、说明文件(-m)。如果省略参数则返回所有的信息。
- 格式
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...] -b 只查找二进制文件。 -B<目录> 只在设置的目录下查找二进制文件。 -f 不显示文件名前的路径名称。 -m 只查找说明文件。 -M<目录> 只在设置的目录下查找说明文件。 -s 只查找原始代码文件。 -S<目录> 只在设置的目录下查找原始代码文件。 -u 查找不包含指定类型的文件。
- 示例
[root@host1 ~]# whereis find find: /usr/bin/find /usr/share/man/man1/find.1.gz [root@host1 ~]# whereis -b find find: /usr/bin/find [root@host1 ~]# whereis -m find find: /usr/share/man/man1/find.1.gz [root@host1 ~]# whereis -s find find:
2. which
which命令是在PATH变量指定的路径中搜索指定的系统命令的位置。用echo $PATH可显示当前PATH变量的值。
- 常用
[root@host1 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/env/jdk/jdk8/bin:/opt/env/jdk/jdk8/jre/bin:/opt/env/maven3.5/bin:/root/bin [root@host1 ~]# which java /opt/env/jdk/jdk8/bin/java
3. whois
Linux whois命令用于查找并显示用户信息。
whois root
4. whatis
用于查询一个命令执行什么功能,并将查询结果打印到终端上, 属于帮助命令
[root@host1 ~]# whatis ls ls (1) - list directory contents
文件/目录命令
以下fn 为filename简写, 表示文件名
| 命令 | 描述 | 常用 |
|---|---|---|
| ls | 查看目录内容 | ls -a ll |
| touch | 创建文件 | touch fn |
| echo | 打印到终端 | echo 字符串 echo 字符串 > 文件 |
| file | 查看文件信息 | file fn |
| cd | 切换目录 | cd ~ cd - cd .. cd !$ |
| pwd | 显示当前目录 | pwd |
| rmdir | 删除文件夹 | rmdir -p 目录名 |
| cp | 复制 | cp sfile disdir |
| mv | 移动/重命名 | |
| rm | 删除 | rm -rf 文件/目录 |
1. wc (word count)
统计文本字数,行数; 默认计算指定文件 行数,字数,字节数;
wc [-clw] [--version] [文件...] -c 只显示Bytes数 -l 只显示行数 -w 只显示字数, 若文本存在中文则结果会不准确 --version 显示版本信息
2. file 查看文件信息
file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...] -b 列出辨识结果时,不显示文件名称。 -c 详细显示指令执行过程,便于排错或分析程序执行的情形。 -f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。 -L 直接显示符号连接所指向的文件的类别。 -m<魔法数字文件> 指定魔法数字文件。 -v 显示版本信息。 -z 尝试去解读压缩文件的内容。 [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
3. 链接命令 ln
-
格式
ln [option] 原文件 目标文件 option -s 软链接, 不加-s为硬链接
-
硬链接特征
1. 拥有相同的i节点和存储block块,可以看做是同一个文件 2. 可以通过i节点识别 3. 不能跨分区 4. 不能针对目录使用
-
软链接特征
1. 类似Windows快捷方式 2. 软链接拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据。 3. Irwxrwxrwx I软链接, 软链接文件权限都为: rwxrwxrwx 4. 修改任意文件,另一个都改变。 5. 删除原文件,软链接不能使用。
解/压缩指令
1. .zip格式文件
- 压缩文件: zip 压缩文件名 源文件
- 压缩目录: zip -r 压缩文件名 源文件目录
- 解压: unzip 压缩文件
2. .gz格式文件
- gzip [option] 文件名
option -d 解压 -r 压缩目录 -l 显示压缩文件的大小,未压缩文件的大小, 即: 压缩比 -v 显示文件名和压缩比 -num 指定压缩速度, num为1~9, 系统默认为6
3. .bz2格式文件
- bzip2 [option] 文件名
option -c 将压缩过程产生的数据输出到屏幕上 -d 解压 -z 压缩 -k 保留源文件 -num 指定压缩速度, num为1~9, 系统默认为6
- bzip2 -cdz 压缩文件名
4. .tar.gz格式文件
- tar [option] [file...]
option -c 压缩 -x 解压 -z gzip压缩 -j bzip2压缩 -v 压缩过程显示文件 -f f之后接文件名
- 常用:
- 解压到当前目录: tar -zxvf 压缩文件
- 解压到指定目录: tar -zxvf 压缩文件 -C 指定目录路径
- 压缩: tar -zcfv 压缩包名.tar.gz 源文件目录
.tar.bz2格式加解压,将上面命令中的z替换为j即可
网关/ip/端口
1. 查看ip地址:
- ifconfig (net-tools中已被废弃的命令,已多年未被维护)
- ip addr
2. 网卡
- 启动网卡: ifup ens33(网卡名)
- 关闭网卡: ifdown ens33(网卡名)
3. 端口
losf
是一个列出当前系统打开文件的工具.
使用实例:
lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进程现在打开的文件 lsof -c -p 1234:列出进程号为1234的进程所打开的文件 lsof -g gid:显示归属gid的进程情况 lsof +d /usr/local/:显示目录下被进程开启的文件 lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长 lsof -d 4:显示使用fd为4的进程 lsof -i -U:显示所有打开的端口和UNIX domain文件
netstatnetstat -tunlp用于显示 tcp,udp 的端口和进程等相关情况
netstat -tunlp | grep 端口号 -t (tcp) 仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化为数字 -l 仅列出在Listen(监听)的服务状态 -p 显示建立相关链接的程序名 -r 显示路由表
实例
查看8080端口 netstat -tunlp | grep 8080 查看路由表 netstat -rn
查找/搜索
1. locate/slocate
相当于find -name的另一种用法, 用于查找文件或者目录, 查询速度比find更快; 因为他不是搜索具体目录,而是搜索搜索一个数据库/var/lib/locatedb;locate会在后台维护一个数据库: /var/lib/mlocate
这个后台数据库每天更新一次, 手动更新使用命令 updatedb
- 语法:
locate/slocate [option] [PATTERN] option -d <目录> 或 -database=<目录> -u 更新slocate数据库
- 实例
搜索etc目录下所有以sh开头的文件: locate /etc/sh 搜索用户主目录下,所有以m开头的文件,并且忽略大小写: locate -i ~/m
2. find
用来在指定目录下查找文件。
- 语法:
find path [option] option -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -type c : 文件类型是 c 的文件。 d:目录; c:字型装置文件; b:区块装置文件; p:具名贮列; f:一般文件; l:符号连结; s:socket -pid n : process id 是 n 的文件 你可以使用 ( ) 将运算式分隔,并使用下列运算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2
- 实例
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。 find . -name "*.c"
进程/负载/线程
1. ps 显示进程
- 格式
ps [option] option -A 显示所有程序 -a 显示线性 -u 以用户为主的格式来显示程序状况 -x 显示所有程序,不以终端机来区分 -e 列出程序时,显示每个程序所使用的环境变量 -f 用ASCII字符显示树状结构,表达程序间的相互关系
- 常用:
ps -aux | grep java ps -ef | grep java
2. top 实时显示进程动态
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
- 格式
top [option] option -d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 -p 通过指定监控进程ID来仅仅监控某个进程的状态。 -q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。 -S 指定累计模式 -s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。 -i 使top不显示任何闲置或者僵死进程。 -c 显示整个命令行而不只是显示命令名
-实例
top //每隔5秒显式所有进程的资源占用情况 top -d 2 //每隔2秒显式所有进程的资源占用情况 top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名) top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况 top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
3. kill终止进程
向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process;
- 格式
ps [option] pid option -9 强行终止进程
4. 查看负载
查看服务器负载常用命令 top uptime w
[root@host1 ~]# uptime 06:45:17 up 1:39, 1 user, load average: 0.00, 0.01, 0.05 [root@host1 ~]# w 06:45:18 up 1:39, 1 user, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.25.1 05:06 6.00s 0.10s 0.00s w
load average 分别对应过去1分钟,5分钟,15分钟的负载平均值.
5. 查看进程中的线程
ps -T -p <pid>查看进程号为pid的进程创建的所有线程top -H列出所有Linux线程top -H -p <pid>查看进程号为pid的进程内运行的线程- Htop工具
磁盘/目录情况
1. df 查看磁盘
查看文件系统的磁盘使用情况
- 格式
df [option]... [FILE]... option -h 使用人类可读格式 -k 单位为k -m 单位为m -l 只显示本地文件系统
- 常用
df -h
2. du 查看文件/目录
用于显示目录或文件所占用的磁盘大小
- 格式
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件] option -b或-bytes 显示目录或文件大小时,以byte为单位。 -h或--human-readable 以K,M,G为单位,提高信息的可读性。 -k或--kilobytes 以1024 bytes为单位。 -m或--megabytes 以1MB为单位 -s或--summarize 仅显示总计 ...
- 常用
du -sh / 查看/目录大小 du -sh /* 查看/目录下的文件及文件夹大小
用户/用户组/权限
1. 用户
- 添加用户
useradd
useradd [option] 用户名 option -c comment 指定一段注释性描述。 -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -g 用户组 指定用户所属的用户组。 -G 用户组,用户组 指定用户所属的附加组。 -s Shell文件 指定用户的登录Shell。 -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。 常用: useradd tom //创建一个名为tom的用户,默认在home目录下
- 删除用户
userdel
userdel [option] 用户名 option -r 把用户主目录也一起删除 常用: userdel -r tom //删除用户tom在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录
- 修改密码
passwd
passwd [option] 用户名 option -l 锁定口令, 即禁用账号 -u 口令解锁 -d 使账号无口令 -f 强迫用户下次登入时修改口令 常用: passwd // 修改当前用户口令
- 修改账号
usermod
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
usermod [option] 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
usermod -s /bin/ksh -d /home/z –g developer tom 将用户tom的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
2. 用户组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
- 新增用户组
groupadd
groupadd [option] 用户组 option -g GID 指定新用户组的组标识号(GID)。 -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。 常用: groupadd group1 //向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。 groupadd -g 101 group2 //此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
- 删除用户组
groupdel
groupdel 用户组 常用: groupdel group1 //此命令从系统中删除组group1。
- 修改用户组的属性
groupmod
groupmod 选项 用户组 option -g GID 为用户组指定新的组标识号。 -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。 -n新用户组 将用户组的名字改为新名字 常用: groupmod -g 102 group2 //此命令将组group2的组标识号修改为102。 groupmod –g 10000 -n group3 group2 //此命令将组group2的标识号改为10000,组名修改为group3。
-
用户组切换
newgrp
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。newgrp root
将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
3. 权限
- 文件权限
chmod
文件权限针对三类对象, 所属用户owner:o; 所属组group:g; 其他人other:o;每类对象都定义了三种权限rwx, 根据二进制 r = 4, w = 2, x = 1;
ls -l drwxrwxr-x 2 kun kun 4096 7月 25 12:06 LGPL 依次为:文件权限 连接数 文件所有者 文件所属组 文件大小(默认单位B) 文件最后被修改时间 文件名 文件权限中第一个字符代表该文件是目录或文件等 d 目录 - 文件 l 链接文件 b 设备文件里面的可供存储的接口设备 c 设备文件里面的穿行端口设备,例如鼠标键盘 第一个字符后三个一组分别为文件所有者权限,同用户组权限,其他非本用户组权限 三个权限 rwx 对应read write execute
chmod 命令格式及常用操作如下:
chmod [option]... [file]... option -f:错误信息不显示 -R:递归修改权限 -v:显示详细修改权限过程 -c:和-v一样,但只有出现改变时才显示 常用: chmod u+x test.sh // 为test.sh添加可执行权限 chmod 600 test.txt // 为test添加可读可写权限;
- 用户权限
chown
将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。一般只有root权限才能使用该命令
chown [option] [--help] [--version] user[:group] file... option user : 新的文件拥有者的使用者 ID group : 新的文件拥有者的使用者组(group) -c : 显示更改的部分的信息 -f : 忽略错误信息 -h :修复符号链接 -v : 显示详细的处理信息 -R : 处理指定目录以及其子目录下的所有文件 常用: chown root:group file1.txt // 将file1.txt所属用户设置为root, 用户组设置为group
文本显示
1. tail
tail -10 install.log 查看文件尾部的10行 tail -f install.log 小f跟踪文件的唯一inode号,就算文件改名后,还是跟踪原来这个inode表示的文件 tail -F install.log 大F按照文件名来跟踪
2. head
head -10 install.log 查看文件头部的10行
3. cat
由第一行显示文件内容(一次性将文件内容全部输出)
cat [option] 文件名
option
-b 列出行号,空白行不标号
-n 列出行号,空白行也标有行号
-A 相当于-vET的整合
-T 将[tab]按键以^T显示出来
-v 列出一些看不见的字符
-E 将行未的断行字符以$显示出来
4. tac
由最后一行开始显示,为cat的倒写
5. more
more 文件名 //可以翻页查看, 下翻一页(空格) 上翻一页(b) 退出(q)
6. less
less 文件名 // 可以翻页查看,下翻一页(空格) 上翻一页(b),上翻一行(↑) 下翻一行(↓) 可以搜索关键字(/keyword)
7. nl
添加行号显示
远程登入/文件传输
1. 远程登入ssh
- 格式
ssh ip地址
-
服务器之间配置免密登入
1.在当前服务器生成ssh公私钥对:ssh-keygen -t rsa; 生成之后会在用户根目录下生成一个
.ssh文件夹; 在.ssh文件夹中有几个文件:authorized_keys用于存放远程免密登入公钥, 主要通过这个文件记录多台机器的公钥;id_rsa生成的私钥文件;id_rsa.pub生成的公钥文件;know_hosts已知的公钥清单;2.将公钥拷贝到需要远程登入的那台服务器认证文件
authorized_keys中, \使用ssh-copy-id 远程服务器ip命令拷贝3.远程登入测试,若不在需要密码即可登入,则成功了.
2. 文件传输scp
- 格式
scp [option] file_source file_target option -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4寻址 -6: 强制scp命令只使用IPv6寻址 -B: 使用批处理模式(传输过程中不询问传输口令或短语) -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) -p:保留原文件的修改时间,访问时间和访问权限。 -q: 不显示传输进度条。 -r: 递归复制整个目录。 -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。 -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。 -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。 -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式, -P port:注意是大写的P, port是指定数据传输用到的端口号 -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
-
常用
scp -rp fileName -P52113 root@10.0.0.41:/tmp/ 命令行中: r表示目录,p代表权限, filename 为要拷贝文件/文件目录名称 -P后面接端口号 root@要拷贝到的目的主机ip :后面接目的主机目录
服务管理
服务管理命令, centos6.x使用的是service和chkconfig; centos7.x之后使用的是systemctl 代替service和chkconfig
1. service
- 常用
service network status 查看网络服务的状态 service network stop 停止网络服务 service network start 启动网络服务 service network restart 重启网络服务 service --status-all 查看系统中所有的后台服务
2. chkconfig
-
常用
chkconfig 查看所有服务器自启配置 chkconfig iptables off 关掉指定服务的自动启动 chkconfig iptables on 开启指定服务的自动启动
3. systemctl
-
格式
systemctl stop/start/restart/status/disable/enable 服务名称
-
常用
停止firewall : systemctl stop firewall.service 禁止firewall开机启动 : systemctl disable firewall.service firewall开机启动: systemctl enable firewall.service
系统启动级别管理
vi /etc/inittab # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault
花了几天时间整理了一下常用的linu命令, 可能还有一些遗漏, 日后再行补充....
来源:https://www.cnblogs.com/jxkun/p/10306703.html