源:banana 童
www.cnblogs.com/bananaaa/p/7774467.html
linux 命令是对 Linux 系统进行管理的命令。对于 Linux 系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件, Linux 系统管理的命令是它正常运行的核心,与之前的 DOS 命令类似。linux 命令在系统中有两种类型:内置 Shell 命令和 Linux 命令。
man | 查看命令帮助,命令的词典,更复杂的还有 info,但不常用。 |
help | 查看 Linux 内置命令的帮助,比如 cd 命令 |
ls | 全拼 list,功能是列出目录的内容及其内容属性信息。 |
cd | 全拼 change directory,功能是从当前工作目录切换到指定的工作目录。 |
cp | 全拼 copy,其功能为复制文件或目录。 |
find | 查找的意思,用于查找目录及目录下的文件。 |
mkdir | 全拼 make directories,其功能是创建目录。 |
mv | 全拼 move,其功能是移动或重命名文件。 |
pwd | 全拼 print working directory,其功能是显示当前工作目录的绝对路径。 |
rename | 用于重命名文件。 |
rm | 全拼 remove,其功能是删除一个或多个文件或目录。 |
rmdir | 全拼 remove empty directories,功能是删除空目录。 |
touch | 创建新的空文件,改变已有文件的时间戳属性。 |
tree | 功能是以树形结构显示目录下的内容。 |
dirname | 显示文件或目录路径。 |
chattr | 改变文件的扩展属性。 |
lsattr | 查看文件扩展属性。 |
file | 显示文件的类型。 |
md5sum | 计算和校验文件的 MD5 值。 |
cat | 全拼 concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。 |
tac | tac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。 |
more | 分页显示文件内容。 |
less | 分页显示文件内容,more 命令的相反用法。 |
head | 显示文件内容的头部。 |
tail | 显示文件内容的尾部。 |
cut | 将文件的每一行按指定分隔符分割并输出。 |
split | 分割文件为不同的小片段。 |
paste | 按行合并文件内容。 |
sort | 对文件的文本内容排序。 |
uniq | 去除重复行。oldboy |
wc | 统计文件的行数、单词数或字节数。 |
iconv | 转换文件的编码格式。 |
dos2unix | 将 DOS 格式文件转换成 UNIX 格式。 |
diff | 全拼 difference,比较文件的差异,常用于文本文件。 |
vimdiff | 命令行可视化文件比较工具,常用于文本文件。 |
rev | 反向输出文件内容。 |
grep/egrep | 过滤字符串,三剑客老三。 |
join | 按两个文件的相同字段合并。 |
tr | 替换或删除字符。 |
vi/vim | 命令行文本编辑器。 |
tar | 打包压缩。oldboy |
unzip | 解压文件。 |
gzip | gzip 压缩工具。 |
zip | 压缩工具。 |
uname | 显示操作系统相关信息的命令。 |
hostname | 显示或者设置当前系统的主机名。 |
dmesg | 显示开机信息,用于诊断系统故障。 |
uptime | 显示系统运行时间及负载。 |
stat | 显示文件或文件系统的状态。 |
du | 计算磁盘空间使用情况。 |
df | 报告文件系统磁盘空间的使用情况。 |
top | 实时显示系统资源使用情况。 |
free | 查看系统内存。 |
date | 显示与设置系统时间。 |
cal | 查看日历等时间信息。 |
which | 查找二进制命令,按环境变量 PATH 路径查找。 |
find | 从磁盘遍历查找文件或目录。 |
whereis | 查找二进制命令,按环境变量 PATH 路径查找。 |
locate | 从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。 |
useradd | 添加用户。 |
usermod | 修改系统已经存在的用户属性。 |
userdel | 删除用户。 |
groupadd | 添加用户组。 |
passwd | 修改用户密码。 |
chage | 修改用户密码有效期限。 |
id | 查看用户的 uid,gid 及归属的用户组。 |
su | 切换用户身份。 |
visudo | 编辑 / etc/sudoers 文件的专属命令。 |
sudo | 以另外一个用户身份(默认 root 用户)执行事先在 sudoers 文件允许的命令。 |
telnet | 使用 TELNET 协议远程登录。 |
ssh | 使用 SSH 加密协议远程登录。 |
scp | 全拼 secure copy,用于不同主机之间复制文件。 |
wget | 命令行下载文件。 |
ping | 测试主机之间网络的连通性。 |
route | 显示和设置 linux 系统的路由表。 |
ifconfig | 查看、配置、启用或禁用网络接口的命令。 |
ifup | 启动网卡。 |
ifdown | 关闭网卡。 |
netstat | 查看网络状态。 |
ss | 查看网络状态。 |
nmap | 网络扫描命令。 |
lsof | 全名 list open files,也就是列举系统中已经被打开的文件。 |
发送和接收邮件。 | |
mutt | 邮件管理命令。 |
nslookup | 交互式查询互联网 DNS 服务器的命令。 |
dig | 查找 DNS 解析过程。 |
host | 查询 DNS 的命令。 |
traceroute | 追踪数据传输路由状况。 |
tcpdump | 命令行的抓包工具。 |
mount | 挂载文件系统。 |
umount | 卸载文件系统。 |
fsck | 检查并修复 Linux 文件系统。 |
dd | 转换或复制文件。 |
dumpe2fs | 导出 ext2/ext3/ext4 文件系统信息。 |
dump | ext2/3/4 文件系统备份工具。 |
fdisk | 磁盘分区命令,适用于 2TB 以下磁盘分区。 |
parted | 磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。 |
mkfs | 格式化创建 Linux 文件系统。 |
partprobe | 更新内核的硬盘分区表信息。 |
e2fsck | 检查 ext2/ext3/ext4 类型文件系统。 |
mkswap | 创建 Linux 交换分区。 |
swapon | 启用交换分区。 |
swapoff | 关闭交换分区。 |
sync | 将内存缓冲区内的数据写入磁盘。 |
resize2fs | 调整 ext2/ext3/ext4 文件系统大小。 |
chmod | 改变文件或目录权限。 |
chown | 改变文件或目录的属主和属组。 |
chgrp | 更改文件用户组。 |
umask | 显示或设置权限掩码。 |
whoami | 显示当前有效的用户名称,相当于执行 id -un 命令。 |
who | 显示目前登录系统的用户信息。 |
w | 显示已经登陆系统的用户列表,并显示用户正在执行的指令。 |
last | 显示登入系统的用户。 |
lastlog | 显示系统中所有用户最近一次登录信息。 |
users | 显示当前登录系统的所有用户的用户列表。 |
finger | 查找并显示用户信息。 |
echo | 打印变量,或直接输出指定的字符串 |
printf | 将结果格式化输出到标准输出。 |
rpm | 管理 rpm 包的命令。 |
yum | 自动化简单化地管理 rpm 包的命令。 |
watch | 周期性的执行给定的命令,并将命令的输出以全屏方式显示。 |
alias | 设置系统别名。 |
unalias | 取消系统别名。 |
date | 查看或设置系统时间。 |
clear | 清除屏幕,简称清屏。 |
history | 查看命令执行的历史纪录。 |
eject | 弹出光驱。 |
time | 计算命令执行时间。 |
nc | 功能强大的网络工具。 |
xargs | 将标准输入转换成命令行参数。 |
exec | 调用并执行指令的命令。 |
export | 设置或者显示环境变量。 |
unset | 删除变量或函数。 |
type | 用于判断另外一个命令是否是内置命令。 |
bc | 命令行科学计算器 |
chkconfig | 管理 Linux 系统开机启动项。 |
vmstat | 虚拟内存统计。 |
mpstat | 显示各个可用 CPU 的状态统计。 |
iostat | 统计系统 IO。 |
sar | 全面地获取系统的 CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU 中断和网络等性能数据。 |
ipcs | 用于报告 Linux 中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。 |
ipcrm | 用来删除一个或更多的消息队列、信号量集或者共享内存标识。 |
strace | 用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 |
ltrace | 命令会跟踪进程的库函数调用, 它会显现出哪个库函数被调用。 |
shutdown | 关机。 |
halt | 关机。 |
poweroff | 关闭电源。 |
logout | 退出当前登录的 Shell。 |
exit | 退出当前登录的 Shell。 |
Ctrl+d | 退出当前登录的 Shell 的快捷键。 |
bg | 将一个在后台暂停的命令,变成继续执行 (在后台执行)。 |
fg | 将后台中的命令调至前台继续运行。 |
jobs | 查看当前有多少在后台运行的命令。 |
kill | 终止进程。 |
killall | 通过进程名终止进程。 |
pkill | 通过进程名终止进程。 |
crontab | 定时任务命令。 |
ps | 显示进程的快照。 |
pstree | 树形显示进程。 |
nice/renice | 调整程序运行的优先级。 |
nohup | 忽略挂起信号运行指定的命令。 |
pgrep | 查找匹配条件的进程。 |
runlevel | 查看系统当前运行级别。 |
init | 切换运行级别。 |
service | 启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 |
Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
route(选项)(参数)
> route
> route -n
route -n不执行DNS反向查找,直接显示数字形式的IP地址,列出速度会比route快
字段说明
列 | 含义 |
Destination | 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1) |
Gateway | 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关 |
Genmask | Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0 |
Flags | 标记,含义参考表格后面的解释 |
Metric | 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) |
Ref | 路由项引用次数 (不在Linux内核中使用。) |
Use | 此路由项被路由软件查找的次数 |
Iface | 网卡名字,例如 eth0 |
Flags 含义
路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H。下面示例中,对于 10.0.0.8 这个主机,通过网关 192.168.0.1 网关路由:
> route add -net 10.0.0.8 gateway 192.168.0.1 netmask 255.255.255.255 dev eth0
> route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.8 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
主机可以到达的网络。下面示例中,对于10.0.0.0/24这个网络,通过网关192.168.0.1网关路由:
> route add -net 10.0.0.0/24 gateway 192.168.0.1 dev eth0
> route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 192.168.0.1 255.255.255.0 UG 0 0 0 eth0
//或者
> route add -net 10.0.0.0 gateway 192.168.0.1 dev eth0
当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination 是 default 或 0.0.0.0。
> route
default gateway 0.0.0.0 UG 100 0 0 eth0
不指定 gw 选项时,添加的路由记录不使用网关:
> route add -net 10.10.1.0 netmask 255.255.255.0 dev eth0
> route
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
> route add -net 10.10.1.0 netmask 255.255.255.0 reject
> route
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.1.0 - 255.255.255.0 ! 0 - 0 -
> route del -net 10.0.0.0 netmask 255.255.255.0
同时匹配多个路由表时,执行一次删除一条
添加或删除默认网关时,Linux 会自动检查网关的可用性:
> route add default gw 192.168.1.1
SIOCADDRT: Network is unreachable
> route del default gw 192.168.1.1
SIOCDELRT: No such process
原文链接:https://rumenz.com/rumenbiji/linux-route.html
微信公众号:入门小站
【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
信大家对 Linux 肯定是不陌生的,很多同学在学习 Linux 的时候比较头疼,觉得比较难学,命令多记不住,其实我们在学习 Linux 的时候,要把我们的大脑当成内存来用,而不是硬盘。
本文用的是 Ubuntu 操作系统,版本为 ubuntu-21.04-desktop-amd64.iso。下载地址:
http://mirrors.aliyun.com/ubuntu-releases/
用的远程连接工具为 FinalShell,下载地址:
http://www.hostbuf.com/t/988.html
Linux 中有很多命令,命令也有很多参数,那我们要怎么去学习呢?我们可以借助帮助文档,这里给大家介绍 3 个帮助命令:
man 是 manual 的缩写,有问题找男人,当时这是一句开玩笑的话。
man 命令的使用也非常简单,示例如下:
man ls
man 也是一条命令,分为 9 章,可以使用 man 命令获得 man 的帮助:
man man
有的同学一定会好奇,为什么 man 命令给我们 9 章,这是因为命令和系统文件有的时候会出现重名的情况,比如:
passwd # 这是命令
/etc/passwd # 这是配置文件
如果不知道是命令还是配置文件,加上 -a 参数:
man -a passwd
这个时候会先查看 passwd 命令,退出后会显示:
可以根据提示继续查看,还是跳过当前的命令查看下一个命令:
这里我先要说一个内部命令和外部命令的概念,shell 自带的命令称为内部命令,其他的是外部命令。
那要怎么区分到底是内部还是外部呢?通过 type,后面跟上命令。
juran@juran-virtual-machine:~$ type cd
cd 是 shell 内建
如果是内部命令使用 help:
help cd
如果是外部命令使用 --help:
ls --help
info 帮助比 help 更详细,作为 help 的补充,大多数的情况下,我们使用 man 和 help 就足够了。
终端的命令组成:
command [-options] [parameter]
在 Linux 中一切皆文件,而且 Linux 中是没有盘符的概念的,所有的文件都在根目录下,接下来我们就来看下查看目录的命令有哪些。
ls 命令:列出文件夹中的内容,ls 只能查看一层目录信息:
ls # 查看当前文件夹的内容
ls /bin # 查看 bin 目录下的文件
ls 命令还有一些比较常用的选项:
命令选项 | 说明 |
-l | 以列表方式显示 |
-h | 件大小单位显示,默认是字节 |
-a | 显示隐藏文件和隐藏目录 |
tree 命令:以树状方式显示目录信息,tree 可以查看多层目录信息。
tree # 以树状方式显示当前目录信息
tree /bin # 如果提示没有 tree 命令,可以通过 apt install tree 进行安装
查看当前目录路径
pwd 命令:查看当前目录路径,是 print work directory 的缩写。
cd 命令:切换目录,是 change directory 的缩写。
cd 命令有几个常用的写法:
命令 | 说明 |
cd 目录 | 切换到指定目录 |
cd ~ | 切换到当前用户的主目录 |
cd .. | 切换到上一级目录 |
cd . | 切换到当前目录 |
cd - | 切换到上一次目录 |
注意:cd 命令切换目录时,这个目录必须存在。cd 后面不写目录等价于 cd ~。
touch 命令:创建指定文件
touch abc.txt # Linux 里面文件可以没有后缀的
touch a b c # 可以一次创建多个文件
mkdir 命令:创建目录(文件夹)
mkdir movie # 创建 movie 目录
mkdir a b c # 创建 a b c 目录
如果我想创建双层的目录,来试试:
mkdir movie/active # 想要创建 movie 下面的 active 目录,而且 movie 目录是没有被创建过的
mkdir: 无法创建目录 “movie/active”: 没有那个文件或目录
这是我们可以通过选项 -p:
mkdir movie/active -p # 选项和参数之间是没有顺序的,先写那个都可以
我们也可以通过查看帮助文档,man mkdir:
rm 命令:删除指定文件或者目录
rm 命令删除文件:
rm abc.txt
rm 命令删除目录:
mkdir juran
rm juran
rm: 无法删除 'juran': 是一个目录
rm 命令是无法直接删除目录的,需要加上选项 -r:
rm -r juran
可以通过 man rm 查看选项,下面来自帮助文档:
-r, -R, --recursive
remove directories and their contents recursively
rmdir 命令:删除空目录
rmdir juran # juran 目录是空目录
如果删除非空目录:
mkdir -p a/b
rmdir a
rmdir: 删除 'a' 失败: 目录非空
小结
cp 命令:拷贝文件、拷贝目录
cp 命令复制文件:
cp abc.txt juran # 复制 abc.txt 到 juran 目录下
cp命令复制目录
mkdir a b # 创建 a 和 b 目录
cp a b # 复制 a 目录到 b 目录
cp: 未指定 -r;略过目录'a'
如果想要复制目录的话,需要加上选项 -r:
cp -r a b
mv 命令:移动文件、移动目录、重命名
mv 命令移动文件:
mkdir abc # 创建 abc 目录
touch abc.txt # 创建 abc.txt 文件
mv abc.txt abc
mv 命令移动目录:
mkdir a b
mv a b
cat 命令:文本内容显示到终端
查看文件内容:
touch a.txt
ls /bin > a.txt
cat a.txt
查看文件内容,并显示行号:
cat -n a.txt
查看多个文件:
cat a.txt b.txt
多个文件合并:
cat a.txt b.txt > c.txt
还有一个跟 cat 非常像的命令,tac 命令倒叙输出文本内容。
head 命令:查看文件开头
查看文件:
head a.txt # 默认显示文件前 10 行内容
指定查看文件行数:
head -5 a.txt # 显示文件前 5 行内容
tail 命令:查看文件结尾
tail a.txt # 默认显示文件后 10 行内容
指定查看文件行数:
tail -5 a.txt # 显示文件后 5 行内容
查看文件更新:
tail -f a.txt
在另外一个终端,对文件进行更新:
echo "juran" > a.txt
wc 命令:统计文件内容信息
wc -l a.txt # 统计文件行数
tar 命令:压缩和解压缩命令
tar 命令可以打包,也可以打包压缩:
touch 1.txt 2.txt 3.txt
ls /bin > 1.txt
ls /etc > 2.txt
ls /lib > 3.txt
tar -cvf 3.tar ./*.txt
压缩成 .gz 文件:
tar -zcvf backup.tar.gz *.txt
解压 .gz 文件:
tar -zxvf backup.tar.gz
解压到指定的目录:
tar -zxvf backup.tar.gz -C bb/
压缩成 .bz2 文件:
tar -jcvf backup.bz2 *.txt
解压 .bz2 文件:
tar -jxvf backup.bz2
解压到指定目录:
tar -jxvf backup.bz2 -C bb/
压缩 zip 文件:
zip backup *.txt # 默认后缀是.zip
解压缩 zip 文件:
zip backup.zip -d /bb # -d 指定文件夹
我们在 Windows 中有记事本,也有像 pycharm 这样的代码编辑器。
那在 Linux 中我们用什么来写代码呢(如何优雅的装 X)?
用的就是 vim,大家可以把 vim 想象成 Windows 中的 pycharm,或者你熟悉的编辑器。
vim 安装
sudo apt-get install vim # 这是 Ubuntu 的安装
sudo yum install vim # 这是 centos 的安装
vim 的工作模式
工作模式效果图:
编辑模式和末行模式之间不能直接进行切换,都需要通过命令模式来完成。
vim 的末行模式命令
vim 的常用命令
命令 | 说明 |
yy | 复制光标所在行 |
p | 粘贴 |
dd | 删除/剪切当前行 |
V | 按行选中 |
u | 撤销 |
ctr+r | 反撤销 |
>> | 往右缩进 |
<< | 往左缩进 |
:/搜索的内容 | 搜索指定内容 |
:%s/要替换的内容/替换后的内容/g | 全局替换 |
:开始行数,结束行数 s/要替换的内容/替换后的内容 | 局部替换 |
. | 重复上一次命令操作 |
G | 回到最后一行 |
gg | 回到第一行 |
数字+G | 回到指定行 |
shift+6 | 回到当前行的行首 |
shift+4 | 回到当前行的行末 |
ctr+f | 下一屏 |
ctr+b | 上一屏 |
vim 交换文件解决办法
当我们用 vim 编辑一个文件,并写入一些数据,发生意外 vim 没有正常退出,这时再去编辑这个文件就会有如下提示:
这时我们可以直接选择编辑,但是下次打开的时候仍然会有这个提示。如果我们执行命令 ls -a 会看到一个隐藏文件 .a.txt.swp。
这个隐藏文件大家可以理解为 Linux 中的缓存文件,为了帮助我们恢复数据的。如果我们不需要的话,可以直接删除,删除掉这个文件后,再次编辑就不会有这个提示了。
Linux 支持多任务多用户,用户登录 Linux 之后可以做很多事件,这点和 Windows 很像,但是 Windows 不支持多用户。
useradd 命令:创建(添加)用户
useradd -m juran # 如果是普通用户执行这个命令会报错
创建用户是需要管理员的权限才可以的。我们想要执行这个命令有两种方法
sudo useradd -m juran
创建好的用户,还需要设置密码:
sudo passwd juran
设置好密码后,我们可以切换到 juran 用户下:
su juran
在 Ubuntu 中,默认切换到用户的 bash 是 /bash/sh,这样我们在敲命令的时候特别不方便,我们可以在创建用户的指定解释器:
sudo useradd -m juran -s /bin/bash
查看用户是否创建成功,可以查看 /etc/passwd 这个文件:
tail /etc/passwd
passwd 文件中的每项信息说明,以 root:x:0:0:root:/root:/bin/bash 为例:
第一个:用户名
第二个:密码占位符
第三个:uid, 用户 id
第四个:gid, 用户所在组 id
第五个:用户描述, 可选,
第六个:用户的主目录所在位置
第七个:用户所用 shell 的类型,一般由 bash 或者 sh,默认不设置是 sh 类型
创建用户,默认会自动创建一个同名的用户组,查看用户组是否创建成功,可以查看 /etc/group 这个文件。
group 文件中的每项信息说明,以 laowang:x:1001: 为例:
第一个:用户组名
第二个:用户组密码占位符,一般 Linux 系统的用户组都没有密码的
第三个:组 id
我们也可以通过 id 命令查看用户信息:
id laowang
uid=1001(laowang) gid=1001(laowang) 组=1001(laowang)
第一个: uid 表示用户 id
第二个: gid 表示用户组 id
第三个: 组 表示用户所在的用户组
创建用户流程
在 Linux 系统中,UID 为 0,就是超级用户,如果设置管理员用户,可以改为 UID 为 0,系统用户 UID 为 1~999,Linux 安装的服务程序都会创建独有的用户负责运行,普通用户 UID 从 1000 开始,最大值 1000~60000 范围。
修改用户信息
创建的用户没有执行 sudo 命令的权限,那我们想要创建的用户也可以执行这个命令,怎么办呢?
我们可以修改用户的附加组,每个用户都有自己的主组,相当于亲爹,那附加组就相当于干爹,可以有很多个:
sudo usermod -g sudo jr
这时我们创建的用户,就可以执行 sudo 命令了。
为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。
一个公司中有多个部门,每个部门中又有很多员工,如果只想让员工访问本部的资源,则可以针对部门而非具体的员工来设置。开发部的小哥哥想要前台小姐姐的信息,肯定不能让他直接访问的。
groupadd 命令:创建(添加)用户组
创建用户前,我们可以先创建好用户组:
sudo groupadd dev # 创建开发组
创建用户指定组:
sudo useradd -m laowang -g dev
修改用户组:
sudo usermod -g dev laowang
删除用户组:
sudo groupdel dev # 这时会报错
如果用户组下面有用户先删除用户在删除用户组。
执行命令 ls -al 查看文件:
这里以文件 abc 来解释。
第一位:文件类型
后面 9 位表示权限:
命令 | 解释 | 字母表示 |
rw- | 所有者拥有读写权限 | 用 u 表示,代表 user |
r-- | 所属组拥有读权限 | 用 g 表示,代表 group |
r-- | 其他人拥有读权限 | 用 o 表示,代表 other |
减少权限:
chmod u-r abc.txt # 不能读取数据
chmod u-w abc.txt # 不能写入数据
添加只读权限,减少写权限:
chmod u+r,u-w pwd.txt
chmod 数字法的使用,数字法就是 rwx 这些权限也可以用数字来代替。
权限 | 说明 |
r | 可读,权限值是 4 |
w | 可写,权限值是 2 |
x | 可执行,权限值是 1 |
- | 无任何权限,权限值是 0 |
数字法授予权限,所有者可读可写可执行,所属组可读可写,其他人可读:
chmod 764 abc.txt
网络配置最重要的两个工具就是 ifconfig 和 ip,这两个工具分别来自两个工具包 net-tools 和 iproute2。
ifconfig 命令:配置和显示 Linux 系统网卡的网络参数
ifconfig 通常是用来查看网卡的信息(比如 IP 地址、收发包及丢包情况等),以及配置网卡(如启停网卡,修改网卡 MTU,修改 IP、MAC 地址等)。
这个命令需要安装:
sudo apt-get install net-tools
若 ifconfig 提示找不到命令,安装 net-tools 也未果,可能是因为 ifconfig 已不被推荐使用,可用 ip addr show 命令代替,一样可以显示出 IP 地址。
ip 命令:网络配置工具
ip 是非常强大的工具,可以替换 net-tools 包的所有工具,如常见的 ifconfig、netstat、route、arp 等。
查看网卡信息:
ip addr show
显示系统路由:
ip route show
开启网卡或关闭网卡:
ip link set eth0 up # 开启网卡
ip link set eth0 down # 关闭网卡
当我们遇到服务器的网络出现问题的时候,我们改怎么去排查呢?大家可以通过下面的命令来逐一排查。
ping 命令:测试主机之间网络的连通性
这个命令通常用来判断网络的连通性和网速情况,偶尔用来查看域名的 IP:
ping www.baidu.com
ping 命令并不会自动结束,需要我们 ctrl+c 强制停止,大家可以通过 -c 选项来指定 ping 的次数:
ping www.baidu.com -c 3 # 设置完成要求回应的次数
ping 只能使用 ipv4,要使用 ipv6,可以用 ping6 命令。
telnet 命令:登录远程主机和管理(测试 IP 端口是否连通)
telnet 通常用作远程登录,用来确定远程服务的状态,探测远程服务器的某个端口是否能访问,也可以探测本地的:
telnet localhost 22
telnet localhost 3306
处理这种情况方法:
traceroute 命令:显示数据包到主机间的路径
traceroute 主要用来探测从源主机到目标主机之间的每一跳路由节点,通常和 ping 结合起来排查网络故障, ping 测连通性和网速,如果网络不通,可以借由 traceroute 进一步排查是哪个路由节点出问题了。
traceroute www.58.com
我们 traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台 DNS 出现问题时,不能解析主机名、域名时,也会有延时长的现象;您可以加 -n 参数来避免 DNS 解析,以 IP 格式输出数据。
如果在局域网中的不同网段之间,我们可以通过 traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到 traceroute 追踪数据包所经过的网关,提交 IDC 服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC 服务商也不可能帮助我们解决。
netstat 命令:查看 Linux 中网络系统状态信息
netstat 用于查看当前网络的连接情况,能够查看所有的网络连接,包括 Unix Socket 等,也是集多种工具于一身的组合工具。
列出所有端口:
netstat -a # 列出所有端口
netstat -at # 列出所有 tcp 端口
netstat -au # 列出所有 udp 端口
列出所有处于监听状态的 Sockets:
netstat -l # 只显示监听端口
netstat -lt # 只列出所有监听 tcp 端口
netstat -lu # 只列出所有监听 udp 端口
ss 命令:iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息。
ss 和 netstat 类似,也是用来查看网络连接统计的工具,它的输出也和 netstat 类似,甚至显示更多连接状态信息,它最大的优势在于比 netstat 快,在服务器维持上万个连接的情况下,这种优势就体现得比较明显。
显示 TCP 连接:
ss -t -a
列出所有打开的网络连接端口:
ss -l
查看进程使用的 socket:
ss -pl
nc 命令:用于设置路由器
nc 被称为瑞士军刀,非常轻巧但功能强大,能够创建各种不同类型的网络连接、能够实现简单的聊天工具、远程传输文件、debug 分析、扫描端口等。
TCP 端口扫描:
nc -v -z -w2 localhost 1-100
选项解释:
UDP 端口扫描:
nc -u -z -w2 192.168.0.1 1-1000 # 扫描 192.168.0.1 的端口 范围是 1-1000
选项解释:
host 命令:常用的分析域名查询工具
host 命令是域名分析查询工具,用来测试域名系统工作是否正常。
查看百度域名信息:
host www.baidu.com
nslookup 命令:查询域名 DNS 信息的工具
nslookup 有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
进入交互模式,直接输入 nslookup 命令,不加任何参数,则直接进入交互模式,此时 nslookup 会连接到默认的域名服务器。或者输入 nslookup -nameserver/ip。进入非交互模式,就直接输入 nslookup 域名就可以了。
非交互模式:
nslookup www.baidu.com
交互模式:
nslookup
Ubuntu 软件安装有两种方式:
我们绝大多数的时候,都是通过在线安装的方式来进行安装软件。
apt-get 方式安装
在线安装 deb 软件包的命令,主要用于在线从互联网的软件仓库中搜索、安装、升级、卸载软件。
在线安装软件命令格式:
sudo apt–get install 安装包 # 表示在线安装 deb 安装包
源码安装
开源软件都会提供源码下载的方式,对于源代码安装方式的好处即可以定制软件功能,安装需要的模块,不需要的模块可以屏蔽,方便管理,卸载等。
我们以 Redis 为例:
https://redis.io/download # 这是官网 redis 的下载地址
官网中给出了源码安装的方式:
$ wget https://download.redis.io/releases/redis-6.2.5.tar.gz
$ tar xzf redis-6.2.5.tar.gz
$ cd redis-6.2.5
$ make
这里会使用 make 工具,make 工具就会通过 makefile 文件来实现。makefile 文件是一种按照某种语法来编写且定义了各个文件的依赖关系。
使用 make 命令,一般都需要 gcc 的环境:
sudo apt-get install gcc
更改镜像源
因为使用 apt-get 命令默认是从国外的服务器下载安装软件的,会导致下载安装速度很慢,所以需要更改成国内的镜像源服务器。
镜像源说明:镜像源就是下载软件来源的服务器。
更改镜像源的方式:
可视化的方式适合 Ubuntu 这种有图形化界面的。
第一步:
第二步:
第三步:
第四步:
第五步:
最后执行命令:
sudo apt-get update
手动修改就容易很多:
vim /etc/apt/sources.list # 编辑这个文件,将找好的国内镜像源直接复制到这个文件里面就行
这里是清华大学的镜像源,大家可以找其他的镜像源:
ps 命令:用于报告当前系统的进程状态的命令
ps 命令可以搭配 kill 指令随时中断、删除不必要的程序。ps 命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
当我们在终端敲下 ps 命令,会显示如下界面:
字段解释:
PID 代表这个进程对应的 ID 号码
TTY 进程所属的控制台号码
TIME 进程所使用 CPUC 的总时间
CMD 就是正在执行的系统命令行是什么
ps 常用选项,显示 Linux 机器所有详细的进程信息:
ps -ef
字段解释:
UID 这个进程是那个用户执行的命令
PID 进程的标识号码 用于启停进程
PPID 进程的父进程标识号
C 表示 CPU 使用的资源百分比
STIME 表示进程开始执行的时间
TTY 进程在那个终端执行的
TIME 该进程使用的 CPU 总时间
CMD 用户执行某条命令 产生的进程信息
过滤出系统指定的信息:
ps -ef | grep vim
查看 named 进程详细信息:
ps -aux | grep named
显示指定用户信息:
ps -u root
把所有进程显示出来,并输出到 ps1.txt 文件:
ps -aux > ps1.txt
ps 命令的参数,分为两种系统形式:
大家一定要注意带减号和不带减号,表示的含义是不同的。
大家可以看出来效果是不一样的。
pstree 命令:以树状图的方式展现进程之间的派生关系
pstree 命令需要安装:
sudo apt-get install psmisc
执行 pstree 效果如下:
kill 命令:发送相关信号,给进程达到不同的停止效果
我们通常用的都是 kill -9 进程号,除了 -9 这一个信号,kill 也有很多其他的信号。
kill -l
下面是常用的信号:
HUP 1 终端挂断
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
KILL 9 强制终止
TERM 15 终止,这是 kill 命令默认的
CONT 18 继续(与 STOP 相反,fg/bg 命令)
STOP 19 暂停(同 Ctrl + Z)
示例:
ping www.baidu.com
找到 ping 命令的进程号:
ps -ef | grep ping
通过刚才找到的进程号结束掉 ping 命令:
kill -9 进程号
top 命令:显示或管理执行中的程序
可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
当我们敲下 top 命令,可以看到如下界面:
top 交互命令
在 top 命令执行过程中可以使用的一些交互命令,这些命令都是单字母的。
h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为 s),如果有小数,就换算成 ms。输入 0 值则系统将不断刷新,默认值是 5s;
f 或者 F:从当前显示中添加或者删除项目;
o 或者 O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和 CPU 状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据 CPU 使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc 文件中。
top 命令上面字段:
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92
Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie
Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers
Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached
解释:
top - 09:44:56[当前系统时间],
16 days[系统已经运行了 16 天],
1 user[个用户当前登录],
load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用 CPU 百分比],
0.1%sy[内核空间占用 CPU 百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用 CPU 百分比],
0.2%id[空闲 CPU 百分比], 0.0%wa[等待输入输出的 CPU 时间百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap: 5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],
free 命令:显示内存的使用情况
可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
以总和的形式显示内存的使用信息:
free -t
周期性的查询内存使用信息,每 3s 执行一次命令:
free -s 3
显示内存使用情况:
free -m
systemctl 命令:系统服务管理器指令
systemctl 命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
启动服务:
service httpd start
systemctl start httpd.service
停止服务:
service httpd stop
systemctl stop httpd.service
重启服务:
service httpd restart
systemctl restart httpd.service
重载服务:
service httpd reload
systemctl reload httpd.service
检查服务状态:
service httpd status
systemctl status httpd.service
设置开机自启动 MySQL 服务:
systemctl enable mysqld.service
停止开机自启动:
systemctl disable mysqld.service
*请认真填写需求信息,我们会在24小时内与您取得联系。