Linux入门
自学推荐1:https://www.linuxcool.com/
自学推荐2:https://www.runoob.com/linux/linux-vim.html
1.1.0、 Linux名词概念:
1,Linux四大管理类型:内存管理,硬件设备管理,文件管理系统,软件程序管理
2,linux文件类型:管道文件、链接文件、普通文件、目录文件、套接字文件、块设备、字符设备
3,Linux一般由四个主要部分组成分别是内核、Shell、文件结构和实用工具:
Linux一般由四个主要部分组成分别是内核、Shell、文件结构和实用工具:
(1)内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序
(2)Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
(3)文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。
(4)标准的Linux系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。
1.1.1、Linux 主要目录速查表
/home:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录
/bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
/boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
/etc/inittab
/etc/fstab
/etc/init.d
/etc/X11
/etc/sysconfig
/etc/xinetd.d
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
~ 表示当前用户的家目录
~edu 表示用户 edu 的家目录
/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt:给主机额外安装软件所摆放的目录
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root:系统管理员root的家目录
/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr:应用程序存放目录
/usr/bin:存放应用程序
/usr/share:存放共享数据
/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
/usr/local:存放软件升级包
/usr/share/doc:系统说明文件存放目录
/usr/share/man:程序说明文件存放目录
/var:放置系统执行过程中经常变化的文件
/var/log:随时更改的日志文件
/var/spool/mail:邮件存放的目录
/var/run:程序或服务启动后,其 PID 存放在该目录下
1.1.2、磁盘管理 df -h
df [-ahikHTm] [目录或文件名]
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
将容量结果以易读的容量格式显示出来
df -h
将系统内的所有特殊文件格式及名称都列出来
df -aT
1.1.3、服务进程管理
ps –ef
ps -axu
| -a 显示所有用户进程 | -f 显示进程的详细信息 |
|---|---|
| -e 显示包括系统进程的所有进程 | -x 显示没有控制终端的进程 |
| -l 显示进程的详细列表 | -u 显示用户名和启动时间等信息 |
1.1.4、常见操作命令
1、ls、pwd、cd、touch、mkdir、rm、clear、cp命令
1、ls ll
ls -a ->列出目录所有文件,包含以.开始的隐藏文件
ls -a -all
ll
2、pwd(print wrok directory)pwd ->查看当前目录
[root@iZhp35qdvg8tn65vt4l26vZ laowang1]# pwd
/www/wwwroot/laowang1
3、cd命令
cd .. ->返回上一级目录
cd - ->返回上一步操作
cd / :返回首目录
cd ./ 当前目录
cd ../ 上级目录
4、touch、cat创建文件
cat > filename.txt
touch filename.txt
4.1、cat > filename touch、vim 创建文件 | 目录 创建
| 命令 | 简介 |
|---|---|
| cat > filename | 创建一个文件 |
| cat file1 file2 > file | 将file1 ,file2 文件合并为file文件 |
| vim runoob.txt | 建立 名为runoob.txt 文件 (常用) 文件不存在则创建 已存在则打开该文件 |
| mkdir dir | 建立名为 dir 录: |
| mkdir dir1 dir2 dir3 | 同时创建子目录dir1,dir2,dir3: |
| mkdir -p linuxcool/dir | 递归创建目录 (先创建linuxcool 在linuxcool目录里面在创建dir目录) |
5、mkdir创建目录
| mkdir dir | 建立名为 dir 录: |
|---|---|
| mkdir dir1 dir2 dir3 | 同时创建子目录dir1,dir2,dir3: |
| mkdir -p linuxcool/dir | 递归创建目录 (先创建linuxcool 在linuxcool目录里面在创建dir目录) |
6、clear清楚屏幕
clear
7、rm删除目录,文件
1、删除文件
| rm -i | 删除任何 .log 文件,删除前逐一询问确认 |
|---|---|
| rm -rf *.log | 删除任何 .log 文件,并且不用一一确认 |
| rm -rf test | 删除 test 子目录及子目录中所有档案删除、并且不用一一确认 |
| rm -- -f* | 删除以 -f 开头的文件 |
| rm -f filename.txt | 删除文件 |
2、删除空目录
rm -d mulu
3、删除当前目录下的所有文件及目录
rm -r * | rm -rf * -f不提示
2、cp、复制命令
-i 提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
-f 复制即使存在覆盖后也不提示
-s 一个链接(快捷方式
cp -rf 目录1 目录2/
| cp -ai a.txt test | 复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。 |
|---|---|
| cp -s a.txt link_a.txt | 为 a.txt 建议一个链接(快捷方式) |
| cp -f laow.txt laow1/ | 复制文件到文件夹(-rf ) |
| cp -rf filename.txt laowang/ | 复制文件到文件夹(-rf ) |
| cp linuxamd64/frpc linuxamd64/frps ./ | 复制linuxamd64目录下的frps 和frpc两个文件 复制到当前目录 .代表当前目录 |
| cp linuxamd64/frpc linuxamd64/frps . | 复制linuxamd64目录下的frps 和frpc两个文件 复制到当前目录 ./代表当前目录 |
| cp frp_0.44.0_linux_amd64/frpc laot/frps.int laot/ | 错误 因为frp_0.44.0_linux_amd64和laot是不同目录 不能一次性复制不同目录文件 |
3、chmod 文件权限修改-chown 目录权限修改
1、-文件 | d目录 权限修改
-rwxr-xr-- ->这个是文件的权限 因为第一个是-
dr--r--r-- ->这个是目录的权限 因为第一个是d
第一个是文件类型:d是目录 -是文件
rwx 这个三个是所有权权限
r-x 这个是同组用户权限
r-- 这个是其他用户的权限
r ->read 4
w ->write 2
x ->execute 1
文件修改权限
user : 代表的是所有者(user)拥有的权限
group :代表的是组群(group)拥有的权限
other :代表的是其他人(other)拥有的权限
+ :为该文件添加权限
- :为该文件删除该权限
= :设置该文件只有这个权限而删除其他权限
chmod u+x,u+w 文件名,
chmod u+x,u+w,g+r,g+u 文件名
chmod u+x,u+w 文件名
chown 用户名 文件/目录名称
chown xiaohong laowang1.txt
4、mv 文件 | 目录 重命名
1、mv命令是move的缩写,可以用来移动文件或者将文件改名
mv命令是move的缩写,可以用来移动文件或者将文件改名
2、文件 目录重命名
| 命令 | 简介 |
|---|---|
| mv 目录名 新目录名 | mv 文件名 新文件名 |
| mv test test2 | 将目录test重命名为test2 |
| mv yourname.sh name.sh | 将文件yourname.sh重命名为name.sh |
3、mv文件移动
| 命令 | 简介 |
|---|---|
| mv file /dir | 将文件file移动到目录dir中 |
| mv /dir1 /dir2 | 将目录dir1移动目录dir2中(前提是目录dir2已存在,若不存在则将目录dir1重命名为dir2): |
| mv /dir1/* . | 将目录dir1下的所有文件移动到当前目录下: |
5、cat /etc/shadow查询用户密码文件(创建时间,密码,用户名)
cat /etc/shadow
显示如下
用户名root:密码$6$6MWq7on:用户创建时间:修改密码间隔时间0:多长时间内需要再次变更密码(默认值为 99999,也就是 273 年):7:999:888:777
:
[root@iZhp35qdvg8tn65vt4l26vZ lao1]# cat /etc/shadow
root:$6$6MWq7on0UP/8$aGKCXDMQf1MtiIFjJUMNFLsC2eTdGAMdbWxvEnPnsxOaIkvbVsAl4OFVXuTx.rvwGmghwpCU7la9ZgQczOa9r.:19406:0:99999:7:::
| root | 用户名 |
|---|---|
| $1$uSNHQyGW$ONvgpZS5A1NhvKS4DgxUX1 | 密码 |
| 19200 | Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间到该用户创建的时间天数差 date -d "1970-01-01 19200 days" |
| 0 | 最小修改间隔时间,也就是说,该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是 0,则密码可以随时修改;如果是 10,则代表密码修改后 10 天之内不能再次修改密码。 |
| 99999 | 经常变更密码是个好习惯,为了强制要求用户变更密码,这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。 该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。管理服务器时,通过这个字段强制用户定期修改密码。 |
| 7 | 该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 "修改密码" 的警告信息。密码需要变更前的警告天数 |
6、用户操作
1、useradd:添加新用户
useradd:添加新用户
格式:useradd [参数] 用户名
示例:# useradd zhang
# useradd -u 510 -g li -d /home/li
-s /bin/bsh -e 2014/12/31 zhang
-u:新账户的用户 ID
-d:新账户的主目录
-l:不要将此用户添加到最近登录和登录失败数据库
-g:新账户主组的名称或 ID
-s:新账户的登录 shell
-e:新账户的过期日期
-L:不要将此用户添加到最近登录和登录失败数据库
-U:创建与用户同名的组
usermod:修改已有用户帐户的属性
格式:usermod [参数] 用户名
参数:
-c:修改用户帐号的备注文字。
-d:修改用户登入时的目录。
-e:修改帐号的有效期限。
-f:改在密码过期后多少天即关闭该帐号。
-g:修改用户所属的群组。
-G:修改用户所属的附加群组。
-l:修改用户帐号名称。
-L:锁定用户密码,使密码无效。
-s:修改用户登入后所使用的shell。
-u:修改用户ID。
-U:解除密码锁定。
说明:usermod参数和useradd参数相同,不同示例:
示例:# usermod –l newname oldname
# usermod -L zhang 锁定用户
# usermod -U zhang 解锁用户
2、passwd用户密码的修改 锁定 删除 解锁,定时锁定,有效时间
passwd:设置用户帐号的口令
格式:passwd [参数] 用户名
说明:若不使用参数及不指定用户名,则修改当前用户自身口令。
-l:锁定已经命名的账户名称
-u:解开账户锁定状态
-x, --maximum=DAYS:密码使用最大时间(天)
-n, --minimum=DAYS:密码使用最小时间(天)
-d:删除使用者的密码
-S:检查指定使用者的密码认证种类
passwd:改密码
示例:$ passwd
# passwd zhang
# passwd -l zhang
# passwd -u zhang
# passwd -d zhang
userdel:删除指定的用户帐户
格式:userdel [-r] username
说明:若使用参数r则删除用户的同时删除用户所有相关的文件。
示例:# userdel -r zhang
# usermod -L zhang 锁定用户
# usermod -U zhang 解锁用户
3、whoami(目前当前在线的用户) who -u(在线用户或者登录过的用户)
who -u //在线用户或者登录过的用户
root pts/0 2023-02-26 11:23 . 1437496 (117.61.108.40)
root pts/1 2023-02-26 11:23 03:04 1437496 (117.61.108.40
whoami //目前当前在线的用户
| 创建新用户 | 可以使用useradd命令来创建新用户 | 输入sudo useradd username命令即可创建一个名为username的新用户。 |
|---|---|---|
| 设置用户密码 | 可以使用passwd命令来为用户设置密码 | 输入sudo passwd username命令即可设置username用户的密码。 |
| 修改用户信息 | 可以使用usermod命令来修改用户的信息 | 例如,输入sudo usermod -d /home/new_dir username命令即可将username用户的家目录更改为/home/new_dir。 |
| 删除用户 | 可以使用userdel命令来删除用户 | 输入sudo userdel username命令即可删除名为username的用户。 |
| 添加用户到用户组 | 可以使用usermod命令将用户添加到用户组中 | 输入sudo usermod -aG groupname username命令即可将username用户添加到groupname用户组中。 |
| 修改文件和目录的权限 | 可以使用chmod命令来修改文件和目录的权限 | 输入sudo chmod 755 file_or_directory命令即可将文件或目录的权限更改为rwxr-xr-x。 |
| 修改文件和目录的所有者和组 | 可以使用chown和chgrp命令来更改文件和目录的所有者和组 | 输入sudo chown username file_or_directory命令即可将文件或目录的所有者更改为username。 |
4、查询linux所有用户
最后,我们也可以使用我们熟悉的ls命令来查看Linux中所有用户。Linux中用户数据保存在/etc/ 文件夹下,我们可以使用以下命令来查看所有用户:
$ ls -l /etc/passwd /etc/group
上面的命令将显示Linux服务器上的所有用户和所有组的详细信息。
[root@VM-12-5-centos linuxtest]# ls -l /etc/passwd /etc/group
-rw-r--r-- 1 root root 634 Jul 25 17:03 /etc/group
-rw-r--r-- 1 root root 1359 Jul 25 17:03 /etc/passwd
getent passwd
cat /etc/passwd
# 查找指定用户信息(如:root)
getent passwd root
# 获取 所有 主机信息
getent hosts
# 根据 IP地址 查找
getent hosts IP地址
# 根据 域名 查找
getent hosts 域名
# 获取 所有 服务信息(服务名、端口号、协议)
getent services
# 获取 指定 服务信息(服务名、端口号、协议)
getent services 端口号
上面的命令将显示Linux服务器上的所有用户。
[root@VM-12-5-centos linuxtest]# getent passwd
root:x:0:0:root:/root:/bin/bash
mysql:x:1002:1002::/home/mysql:/sbin/nologin
redis:x:1003:1003::/home/redis:/sbin/nologin
xroot:x:1004:1004::/home/xroot:/bin/bash
5、id 命令、打印 当前用户名 的信息
打印 当前用户名 的信息,输出结果各字段如下:
- uid:显示 用户ID 和 用户名
- gid:显示 用户组ID 和 组名称
- groups:显示 用户的附加 组ID 和 组名称
[root@VM-12-5-centos linuxtest]# id
uid=0(root) gid=0(root) groups=0(root)
5.1、查询某个用户信息和所在的组
cat /etc/group | grep laowang;
id laowang
5.2、id命令法 id 用户名(可以查看当前登录用户所在的用户组)
id laowang
5.3、groups命令(可以查看某个用户所属的用户组)/etc/group 是用户组配置文件,可以查看此文件通过 grep 查询某个用户所在的用户组
groups命令可以查看某个用户所属的用户组,只执行groups命令,可以查看系统当前登录用户的用户组。
/etc/group 是用户组配置文件,可以查看此文件通过 grep 查询某个用户所在的用户组
6、查看/etc/passwd文件 (cat /etc/group | grep laowang)
文件 /etc/passwd 存储着所有用户的基本信息,并且 所有用户 都对此文件拥有读权限。
cat /etc/passwd
--------------------------------------------------------------------------------
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
可以看到每行记录对应着一个用户信息,每条记录 共7段 用 冒号: 拼接,格式如下:
- 第1段:用户名
- 第2段:登录密码,默认用x替代,真实密码详见《/etc/shadow》文件
- 第3段:uid 用户唯一ID
- 第4段:gid 所属的用户组ID,uid 和 gid 对应关系详见《/etc/group》文件
- 第5段:账号的说明性描述
- 第6段:用户的家目录路径
- 第7段:默认shell,如果为 /sbin/nologin/ 则不允许登录
7、查看/etc/shadow文件
文件 /etc/shadow 存储着所有 用户的口令密文信息,同时为确保安全性,仅 root 权限用户 对此文件拥有读权限。
[root@VM-12-5-centos linuxtest]# cat /etc/shadow;
root:$1$xleNdXmP$ZnEvPt7b0LhCyCail0d.p.:19293:0:99999:7:::
bin:*:18397:0:99999:7:::
daemon:*:18397:0:99999:7:::
adm:*:18397:0:99999:7:::
lp:*:18397:0:99999:7:::
sync:*:18397:0:99999:7:::
shutdown:*:18397:0:99999:7:::
halt:*:18397:0:99999:7:::
mail:*:18397:0:99999:7:::
operator:*:18397:0:99999:7:::
games:*:18397:0:99999:7:::
ftp:*:18397:0:99999:7:::
nobody:*:18397:0:99999:7:::
dbus:!!:18992::::::
systemd-coredump:!!:18992::::::
systemd-resolve:!!:18992::::::
tss:!!:18992::::::
polkitd:!!:18992::::::
unbound:!!:18992::::::
sssd:!!:18992::::::
sshd:!!:18992::::::
chrony:!!:18992::::::
syslog:!!:19015::::::
lighthouse:!!:19293:0:99999:7:::
www:!!:19293:0:99999:7:::
postfix:!!:19293::::::
mysql:!!:19293:0:99999:7:::
redis:!!:19293:0:99999:7:::
xroot:$6$C6lXn3gcyOx7QJYM$2nyRUazeYYMQ2nIFXYO7ADjC0R1xMwFZbq.yPyv03SB.KirmJpmP26YJbV9R7.ke8td6krKSdCLDCdxOaZ41Q0:19563:0:99999:7:::
[root@VM-12-5-centos linuxtest]#
- 第1段:用户名
- 第2段:密码密文(SHA512散列加密算法)
- 第3段:最近一次修改密码时间(从1970-01-01开始的天数)
- 第4段:密码最小修改间隔的天数(依赖第3段的时间,如:0 表示 随时可以修改密码)
- 第5段:密码有效期(最晚 N 天之后必须修改,如:99999 表示 密码长期有效)
- 第6段:密码到期前提醒(依赖第5段的时间,如:7 表示密码有效期第7天开始,每次登录时提示)
- 第7段:密码过期后宽限天数(依赖第5段的时间,如:10 表示 密码过期后10天内允许登录,过期禁用)
- 第8段:账号失效日期(从1970-01-01开始的天数,到期无论账号是否有效,都将无法使用)
- 第9段:保留字段,无含义
8、使用lslogins命令、列出系统中所有用户的信息
[root@VM-12-5-centos linuxtest]# lslogins
UID USER PROC PWD-LOCK PWD-DENY LAST-LOGIN GECOS
0 root 133 0 0 13:26 root
1 bin 0 0 0 bin
998 polkitd 1 1 0 User for polkitd
1001 www 89 1 0
1002 mysql 1 1 0
1003 redis 3 1 0
1004 xroot 0 0 0
65534 nobody 0 0 0 Kernel Overflow User
lslogins 命令 列出系统中所有用户的信息。输出结果各字段如下:
- UID:用户ID
- USER:用户名
- PWD-LOCK:密码已设置且已锁定(0:未锁定、1:已锁定)
- PWD-DENY:登录密码是否禁用(0:允许密码登录、1:禁用密码登录)
- LAST-LOGIN:最近一次的登录日期
- GECOS:用户的其它信息(如:用户描述)
9、/etc/passwd文件中列出了所有系统用户,/etc/group文件中列出了组,实际的密码存储在/etc/shadow文件中。无论我们使用什么命令,它都会从这些文件获取信息。
7、Linux新增用户,并设置Root(管理员)权限
1、添加用户
useradd laowang;
2、设置密码
passwd laowang
laowang 147
laowang 147
3、将用户加入管理权限组
usermod -a -G wheel ypsroot
4、将用户加入管理权限组
chmod -v u+w /etc/sudoers
5、修改指令,让新用户授权root权限
vim /etc/sudoers
6、修改密令,授权管理员权限
新用户名 ALL=(ALL) ALL
7、
使用管理员指令前面要加
sudo
7、Linux - 用户|权限管理 - 查看用户在哪些组
方法1: 使用groups命令.
用法:
groups [user_name]
注意: 如果没有填充 user_name 部分, 那么就是查看的当前操作的用户所在组; 如果填充了 user_name, 就是查看指定的 user_name 用户所在组.
方法2: 使用id命令
用法
id [user_name]
注意: 如果没有填充 user_name 部分, 那么就是查看的当前操作的用户所在组; 如果填充了 user_name, 就是查看指定的 user_name 用户所在组
方法3: 使用cat /etc/group命令
用法:
cat /etc/group
cat /etc/group | grep username
8、curl函数
1、指定UA客户端(模拟浏览器)访问
curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36' http://www.baidu.com
curl -H 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36' http://www.baidu.com
2、-b参数用来向服务器发送 Cookie。
curl -b 'foo=bar' http://www.baidu.com
上面命令会生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。
curl -b 'foo=bar;foo2=bar2' http://www.baidu.com
上面命令发送两个 Cookie。
3、 读取本地文件cookies.txt发送服务器
curl -b cookies.txt http://www.baidu.com
上面命令读取本地文件cookies.txt,里面是服务器设置的 Cookie(参见-c参数),将其发送到服务器。
-c参数将服务器设置的 Cookie 写入一个文件。
curl -c cookies.txt http://www.baidu.com
4、-d参数用于发送 POST 请求的数据体。
curl -d 'name=dge&age=26' -X POST http://192.168.124.16:5000
curl -d 'name=dge' -d 'age=26' -X POST http://192.168.124.16:5000
使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。
curl -d 'name=dge&age=26' http://192.168.124.16:5000
5、data-urlencode参数等同于-d,发送 POST 请求的数据体,区别在于会自动将发送的数据进行 URL 编码。
curl --data-urlencode 'comment=hello world' http://192.168.124.16:5000
9、wget命令
wget [-b] url
- 选项:
-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件 - 参数:
url,下载链接
示例:
下载apache-hadoop 3.3.0版本:
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
在后台下载:
wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
通过tail命令可以监控后台下载进度:tail -f wget-log
1、使用 -O 选项以其他名称保存下载的文件
要以其他名称保存下载的文件,使用-O选项,后跟指定名称即可:
wget -O redis.tar.gz https://download.redis.io/releases/redis-6.0.8.tar.gz //也就是下载redis-6.0.8.tar.gz 但命名为redis.tar.gz
2、wget下载redis的tar.gz文件
wget https://download.redis.io/releases/redis-6.0.8.tar.gz
3、使用 -P 选项将文件下载到指定目录
默认情况下,wget将下载的文件保存在当前工作目录中,使用-P选项可以将文件保存到指定目录下,例如,下面将将文件下载到/usr/software目录下:
wget -P /usr/software https://download.redis.io/releases/redis-6.0.8.tar.gz
4、使用 -c 选项断点续传
当我们下载一个大文件时,如果中途网络断开导致没有下载完成,我们就可以使用命令的-c选项恢复下载,让下载从断点续传,无需从头下载。
wget -c https://download.redis.io/releases/redis-6.0.8.tar.gz
5、使用 -b 选项在后台下载
我们可以使用-b选项在后台下载文件:
wget -b https://download.redis.io/releases/redis-6.0.8.tar.gz
默认情况下,下载过程日志重定向到当前目录中的wget-log文件中,要查看下载状态,可以使用tail -f wget-log查看。
6、使用 -i 选项下载多个文件
如果先要一次下载多个文件,首先需要创建一个文本文件,并将所有的url添加到该文件中,每个url都必须是单独的一行。
vim download_list.txt
然后使用-i选项,后跟该文本文件:
wget -i download_list.txt
7、使用 --limit-rate 选项限制下载速度
默认情况下,wget命令会以全速下载,但是有时下载一个非常大的资源的话,可能会占用大量的可用带宽,影响其他使用网络的任务,这时就要限制下载速度,可以使用--limit-rate选项。例如,以下命令将下载速度限制为1m/s:
wget --limit-rate=1m https://download.redis.io/releases/redis-6.0.8.tar.gz
8、使用 -U 选项设定模拟下载
如果远程服务器阻止wget下载资源,我们可以通过-U选项模拟浏览器进行下载,例如下面模拟谷歌浏览器下载。
wget -U 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.43 Safari/537.36' https://download.redis.io/releases/redis-6.0.8.tar.gz
9、使用 --tries 选项增加重试次数
如果网络有问题或下载一个大文件有可能会下载失败,wget默认重试20次,我们可以使用-tries选项来增加重试次数。
wget --tries=40 https://download.redis.io/releases/redis-6.0.8.tar.gz
10、用wget命令从FTP服务器下载数据
wget --ftp-user=laowang --ftp-password=laowang ftp://124.222.200.37/zhujumao236vnp.apk -r 下载某个文件
wget --ftp-user=laowang --ftp-password=laowang ftp://124.222.200.37/ -r 下载整个文件夹
>FTP options:
--ftp-user=USER set ftp user to USER
--ftp-password=PASS set ftp password to PASS
--no-remove-listing don't remove '.listing' files
--no-glob turn off FTP file name globbing
--no-passive-ftp disable the "passive" transfer mode
--preserve-permissions preserve remote file permissions
--retr-symlinks when recursing, get linked-to files (not dir)
举个栗子
wget --ftp-user=USER --ftp-password=PASS ftp://124.222.200.37/laowang/ -r
这个就可以批量下载 ftp://124.222.200.37/laowang/ 文件夹下面的所有文件了。
11、YUM安装软件
yum最大的优势是可以去互联网上下载所需要的rpm包,然后自动安装。
1、yum [-y] [install 安装| remove卸载 | search搜索] 软件名称
1、yum命令需要root权限哦,可以su切换到root,yum命令需要联网、或使用sudo提权。
2、yum [-y] install wget, 通过yum命令安装wget程序
yum [-y] [install | remove | search] 软件名称
选项:-y,自动确认,无需手动确认安装或卸载过程
install:安装
remove:卸载
search:搜索
yum命令需要root权限哦,可以su切换到root,或使用sudo提权。
yum命令需要联网
yum [-y] install wget, 通过yum命令安装wget程序
格式:
yum [options] [command] [package ...]
其中:
[options]选项,包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
[command]为所要进行的操作,
[package ...]是操作的对象
(1) 查询
查看所有软件仓库:
yum repolist all
查看可用的软件仓库:
yum repolist enabled
2、更新指定的软件包:yum update <软件包名>
3、删除指定的软件包:yum remove <软件包名>
4、清除缓存目录下的软件包: yum clean <软件包名>
5、列出所有可更新的软件清单命令:yum check-update
6、更新所有软件命令:yum update
7、仅安装指定的软件命令:yum install
8、仅更新指定的软件命令:yum update
9、yum clean packages: 清除缓存目录下的软件包
10、yum clean headers: 清除缓存目录下的 headers
11、yum clean oldheaders: 清除缓存目录下旧的 headers
12、yum和wget区别
yum是一种安装工具。如果你想安装软件,可以使用yum安装的时候,建议使用yum安装最好,基本上是一步完成。
比如安装Linux的rz/sz命令工具:
直接输入:yum install -y lrzsz 就会安装了。
wget是一种下载工具。可以下载网络上的资源,有点类似于迅雷。
比如安装redis时需要先下载redis软件然后再安装,那就用wget命令。
13、安装本地文件上传服务器的插件
1、yum install -y lrzsz
14、tar压缩目录,zip压缩目录
1、tar cvf、zcvf打包成tar.gz的区别
tar cvf laowangs.zip disk.pl //将disk.pl打包成laowangs.zip
等价于:tar cvf laowangs.tar.gz disk.pl //即使后缀是tar.gz也等同上面 因为参数不是zcvf
tar zcvf想要打包成 tar.gz必须是 zcvf
tar zcvf laowangs.tar.gz disk.pl //将disk.pl打包成laowangs.tar.gz
查询某软件包
tar ztf <TAR包名>
2、zip 命令压缩文件
# 将a.txt b.txt c.txt 压缩到test.zip文件内
zip test.zip a.txt b.txt c.txt
# 将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
zip -r test.zip test itheima a.txt
15、本地上传linux服务器,服务器下载到本地
1、rz上传
从本地上传文件到linux 服务器、
yum -y install lrzsz
2、sz下载
文件会自动下载到桌面的:fsdownload文件夹中。
sz laowang.txt
注意,rz、sz命令需要终端软件支持才可正常运行
16、systemctl重启 停止 启动 开机自启
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启
能够被systemctl管理的软件,一般也称之为:服务
语法:
1、systemctl start | stop | status | enable | disable 服务名
1. 启动
通过systemctl start 来启动
sudo systemctl start test.service
2. 停止
通过systemctl stop 来停止
sudo systemctl stop test.service
3. 重启
通过systemctl restart 来重启
sudo systemctl restart test.service
4. 开启开机自启动
通过systemctl enable 来开启开机自启动
sudo systemctl enable test.service
5. 关闭开机自启动
通过systemctl disable 来关闭开机自启动
sudo systemctl disable test.service
17、netstat命令查询进程(端口占用,进程名字,监听状态)
1、可以通过nmap命令去查看端口的占用情况
1、使用nmap命令,安装nmap:yum -y install nmap
2、可以通过netstat命令,查看指定端口的占用情况
1、安装netstat:yum -y install net-tools
netstat -anp | grep 端口号
返回字段定义
netstat -anp
Proto:代表协议(tcp、tcp6、udp、udp6)
Recv-Q:数据已经在本地接收缓冲,但是还没有recv()
Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区
Local Address: 本地IP:本地端口
Foreign Address: 远程IP:远程端口
State:链接状态(监听状态:LISTEN、建立连接状态:ESTABLISHED等)
PID:进程PID号
Program name:程序名字
三、常用的netstat命令:
1、查询进程号所占用的端口号: netstat -anp | grep 进程号(PID)
2、查看端口号对应的进程,用于排查端口号是否被占用:netstat -tunlp | grep 端口号
3、查看端口号的使用情况:netstat -anp | grep 端口号
4、显示pid和进程:netstat -pt
5. 列出所有处于监听状态的 Sockets:
netstat -l #只显示监听端口
netstat -lt #只列出所有监听 tcp 端口
netstat -lu #只列出所有监听 udp 端口
netstat -lx #只列出所有监听 UNIX 端口
18、df磁盘管理
1、将容量结果以易读的容量格式显示出来
df -h
将系统内的所有特殊文件格式及名称都列出来
df -aT
19、进程管理 PS
0、options表示命令参数,详细的参数列表如下:**
ps –ef
| -a 显示所有用户进程 | -f 显示进程的详细信息 |
|---|---|
| -A 显示所有进程(等价于-e) | -d 显示所有进程,但省略所有的会话引线 |
| -e 显示包括系统进程的所有进程 | -x 显示没有控制终端的进程 |
| -l 显示进程的详细列表 | -u 显示用户名和启动时间等信息 |
| -u uid or username 选择有效的用户id或者是用户名 | -g gid or groupname 显示组的所有进程 |
| -p pid 进程使用cpu的时间 |
ps -axu
| UID : 进程的所有者 | PID: 进程的PID |
|---|---|
| PPID: 父进程的ID | C: 进程占用CPU的百分比 |
| STIME: 系统时间 | time: 进程使用的CPU时间 |
| cmd: 进程使用的命令 |
针对STAT(进程当前状态)的描述如下:
| D | 无法中断的休眠状态(通常 IO 的进程) | R | 正在运行可中在队列中可过行的 |
|---|---|---|---|
| S | 处于休眠状态 | T | 停止或被追踪 |
| W | 进入内存交换 (从内核2.6开始无效) | X | 死掉的进程 (基本很少见) |
| Z | 僵尸进程 | < | 优先级高的进程 |
| N | 优先级较低的进程 | L | 有些页被锁进内存 |
| s | 进程的领导者(在它之下有子进程) | l | 多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads) |
1、ps查看指定的进程,如java进程
ps -aux|grep java
#获取java进程号,如55555,通过kill命令关闭进程(-9表示强制关闭)
kill` `-9 55555
选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
2、查看cpu占用率前10的进程
#这里head命令后的11,包含第1行的列信息
ps -aux --``sort``=-pcpu|head -11
3、kill ps杀掉进程
1、查看 php 程
ps -aux|grep php
2、获取php进程号,如55555,通过kill命令关闭进程(-9表示强制关闭)
kill -9 55555
20、history历史命令搜索(查看历史输入过的命令)ctrl + r,输入内容去匹配历史命令
1、history命令
可以通过history命令
2、ctrl + r,输入内容去匹配历史命令
3、清屏
通过快捷键ctrl + l,命令clear
21、service 系统服务管理启动,状态,服务,防火墙
1、安装防火墙
yum install firewalld systemd -y
2、查询服务状态 修改服务 启用 重启 停止
常用格式: service 服务名(firewalld) {start, stop, restart, try-restart, reload, force-reload, status}
1、查看服务器状态
service firewalld status
2、启用防火墙服务
service firewalld start
3、停止防火墙服务
service firewalld stop
4、重启防火墙服务
service firewalld restart
4、开启自启动防火墙服务 错 service没自启动enable功能 使用systemctl
service firewalld enable
inactive :非活动状态
3、显示当前主机信息
$ hostnamectl
4、设置主机名
sudo hostnamectl set-hostname BoodeUbuntu
22、日期、时区 ,IP信息 外网IP 内网IP
0、curl ident.me获取外网IP
过下面的命令来获取公有ip地址。
curl ipinfo.io/ip/
curl ident.me
curl api.ipify.org
[root@VM-8-16-centos ~]# curl ident.me
119.29.172.152
1、本linux机器查看IP地址
ip addr
ifconfig -a
通过ip route命令也能获取ip地址。
[root@sharplee ~]# ip route get 1.2.3.4 | awk '{print $7}'
[root@sharplee ~]# ip route get 1.2.3.4 | awk '{print $7}'
查找IP地址常用方法nmcli命令,在该命令中,我们可以显示设备并显示其详细信息。
nmcli -p device show
date [-d] [+格式化字符串]
-d按照给定的字符串显示日期,一般用于日期计算- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
%Y 年
%y 年份后两位数字 (00..99)
%m 月份 (01..12)
%d 日 (01..31)
%H 小时 (00..23)
%M 分钟 (00..59)
%S 秒 (00..60)
%s 自 1970-01-01 00:00:00 UTC 到现在的秒数
查看当时时间:date
时间格式化:date "+%Y-%m-%d %H:%M:%S" //2023-03-10 06:10:13
1、常用案例演习
1、speedtest-cli上传和下载测速
wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
chmod -R 777 speedtest.py
或者
yum install python-pip
pip install speedtest-cli
easy_install speedtest-cli
pip install git+https://github.com/sivel/speedtest-cli.git
OR
git clone https://github.com/sivel/speedtest-cli.git
cd speedtest-cli
python setup.py install
OR
wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest-cli
详细教程:
ubuntu/usr/bin/env:python:没有这样的文件或目录
/usr/bin/env: ‘python’: No such file or directory
如果未安装 Python 3,请安装它: apt-get install python3
可能的解决方案#2
如果已安装 Python 3,请运行以下命令: whereis python3
然后我们为它创建一个符号链接: sudo ln -s /usr/bin/python3 /usr/bin/python
步骤1. 下载speedtest-cli
使用以下命令从GitHub上下载speedtest.py文件:
wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
步骤2. 赋予执行权限
下载完成后,使用以下命令查看文件权限:
ls -l speedtest.py
确保文件具有执行权限。如果没有执行权限,可以使用以下命令为文件添加执行权限:
chmod u+x speedtest.py
步骤3. 移动文件到/usr/local/bin目录
使用以下命令将speedtest.py文件移动到/usr/local/bin目录下,并将其重命名为speedtest-cli:
mv speedtest.py /usr/local/bin/speedtest-cli
步骤4. 执行速度测试
安装完成后,可以使用以下命令执行速度测试:
speedtest-cli
Retrieving speedtest.net configuration...
Testing from Linode (139.162.133.180)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Netprotect (Frankfurt) [0.89 km]: 1.496 ms
Testing download speed................................................................................
Download: 4990.87 Mbit/s
Testing upload speed................................................................................................
Upload: 3590.11 Mbit/s
# 将速度测试的结果生成一张图片的连接,便于你分享 下图便是
speedtest-cli --share
# 列出所有在中国的测试服务器:
speedtest-cli --list | grep China
# 外网速度测试
speedtest-cli --server=3633 --share
# 开启测速
./speedtest-cli
speedtest-cli --bytes以字节计算的方式来测试上下行速度
speedtest-cli --share将速度测试的结果生成一张图片的连接,便于你分享 下图便是
speedtest-cli --simple只显示ping和上下行速度
speedtest-cli --list 列出speedtest.net所有的服务器距离你的物理距离,单位是千米(km)
Mbit/s 这个单位含义是兆比特每秒,我们经常见到的是MB/s,它的含义是兆字节每秒。MB/s 指每秒传输的字节数量,Mbit/s 是指每秒传输的比特位数。MB/s 中的 B字母是 Byte 的含义,虽然与 Mbit/s 中的 bit 翻译一样,都是比特,也都是数据量度单位,但二者是完全不同的。Byte 是字节数,bit 是位数,在计算机中每 8 位为一字节,也就是 1Byte=8bit,是 1:8 的对应关系,因此 1MB/s 等于 8Mbit/s。
8Mbit/s=1MB/s Mbit/s 兆比特每秒 MB/s 兆字节每秒 1字节等于8比特
2、查询宽带占用情况
Linux系统下如果服务器带宽跑满了,查看跟哪个ip通信占用带宽比较多,还可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。
1、安装iftop:
yum install -y iftop
2、iftop使用
安装好后在服务器执行iftop -i eth1就可以查看服务器公网网卡带宽使用情况(如果只执行iftop默认检测第一块网卡使用情况,这样查的会是内网网卡eth0。
iftop -i eth0 -P
注:-P 参数会将请求服务的端口显示出来
6、free命令(交换 物理空间)
Linux交换空间(swap space)是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是我们常说的 swap out 和 swap in。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!



@叶子:传递给