
测试文章
Linux基础
Linux基础
命令 [-选项] 参数
===系统基础===
基本命令
命令 | 示例 | 功能 | 参数 | 备注 |
---|---|---|---|---|
cd | cd /root/test |
跳转目录 | [.]: 跳转当前目录(可省略) | |
[..]: 跳转上一级目录 | ||||
[~]:跳转用户到主目录 | ||||
[-]: 跳转上一次目录 | ~`cd $变量` | |||
~`cd opt` | ||||
~`opt=/opt` | ||||
~可直接跳转opt | ||||
ls | ls |
显示所有内容 | [-l]: 列出文件信息 | |
[-a]:列出所有文件包括隐藏文件 | ||||
ll | ll |
显示文件详情 | [-a]:列出所有文件包括隐藏文件 | |
rm(高危命令) | rm /root/test y |
删除文件或目录(需确认y/n) | [-f]:不提示,直接删除 | |
[-rf] : 删除目录不提示 | ||||
mkdir | mkdir scy |
创建空目录 | [-p]:创建多层空目录 | ~当前文件夹下创建 |
rmdir | rmdir scy |
删除空目录 | 可删除多个空目录,需要层层删除 | ~`rmdir /1/2/3 /1/2 /1` |
cp | `cp m n |
cp mysq-888 mysql | 复制文件或目录 | [-r]:复制目录 | ~m:原文件位置 ~n : 目标位置 ~可复制后改变文件名 | | mv(高危命令) |
mv m n`
mv mysq-888 mysql
| 移动文件或目录 | | ~m:原目标位置
~n : 目标位置
~建议:
1.移动后改变文件名
2.可自建文件用作回收站
3.可加时间戳 |
| touch | touch new.txt
| 创建空文件 | 只创建不打开 | |
| ln | ln 链接文件 链接名 ln dir1/dir2 file1 ln -s dir1/dir2
| 可创建硬连接与软链接 | [-s]:创建软连接 | ~区别:
1.硬链接只能加在文件上
2.软链接可以加在目录上,软链接可以通过ls显示出链接位置,类型标识为(L)rwxtwxtwx
3.cd -P 链接名
:可直接进入链接目录
4.可给解压文件目录创建软链接尔不用改原始目录名 |
查看文件
标题 | 列 1 | 列 2 | 列 3 | 列 4 |
---|---|---|---|---|
命令 | 示例 | 功能 | 参数 | 备注 |
echo | echo [command] |
输出内容 | [‘ ‘]:原样输出[“ ”]:可以识别特殊符号 | $为特殊符号,变量等 |
cat | cat 1.txt cat etc/passwd cat etc/group |
查看文件全部内容 | [-n]:带行号显示 | 文件过大不建议使用通过cat /etc/passwd 查看用户信息~通过cat /etc/group 查看用户组信息 |
head | head 1.txt |
显示文件头部内容 | [-n num]:指定显示的行数[-num] :直接-加行数 | 默认显示前10行内容 |
tail | tail 1.txt |
显示文件尾部内容 | [-n num]:指定显示的行数[-num] :直接-加行数[-f]:阻塞文件变化 | 默认显示后10行内容可用于>>写入时监控文件 |
more | more 1.txt |
分屏查看,先加载全部文件后查看 | [sapce]:向下翻页[enter]:向下一行[b]:向上翻页[q]:退出查看器[Crtl+c]:强制退出查看器 | 左下角有文件进度百分比 |
less | less 1.txt |
分屏查看, 按需加载查看 | [sapce]:向下翻页[enter]:向下一行[b]:向上翻页[q]:退出查看器[Crtl+c]:强制退出查看器 | |
diff | diff a.txt b.txt |
比较两个文件的不同 | ||
> | command > file |
重定向符号 | 如果文件存在,就覆盖文件内容如果文件不存在,则创建一个新文件并且保存 | 命令可以是任何一个在命令行中有输出结果的命令 |
>> | command >> file |
追加符号 | 如果文件存在,则将结果保存到文件末尾如果文件不存在,则创建一个新文件并且保存 | 命令可以是任何一个在命令行中有输出结果的命令 |
help | [command] - - help help [command] |
简易帮助手册 | 部分命令没有简易版帮助手册,可用过- - help查看 | |
man | man [command] |
详细帮助手册 | 一般命令都有完全的帮助手册 | |
history | 显示之前执行过的命令 | |||
pwd | 显示当前所在目录的绝对路径 | 默认显示为绝对路径 | 绝对路径:从/目录开始一层层将所有目录层级显示出来相对路径:从.(当前目录)开始将目录显示出来 |
文件查找
命令 | 示例 | 功能 | 参数 | 备注 |
---|---|---|---|---|
find | find /root [-name] test [-delete] |
在特定目录下查找特定的文件 | [-name]:根据文件名进行匹配响应文件,如果找到文件,则列出文件路径 | |
[-empty]:查找空文件 | ||||
[-user]:根据文件所属用户查找文件 | ||||
[-group]:根据所属用户组查找文件 | ||||
[-delete]:删除 | ||||
[-exec]:执行 | ||||
1.完全匹配:find /opt -name file.tar.gz |
||||
2.模糊匹配: | ||||
find /opt -name ‘*.tar.*’ |
||||
3.支持正则表达式 | ||||
4.exec删除: | ||||
find . -empty -exec rm -rf {} \; |
||||
locate | locate file1 |
文件定位命令 | 1.可以模糊匹配 | |
2.locate不属于最小安装需要手动安装并更新数据库: | ||||
~`yum -y install mlocate` | ||||
~`updatedb` | ||||
which | 在$PATH中设定的路径中查找相应文件 | ~PATH变量中保存系统中所有指令所在的目录 | ||
详情见示例 | ||||
whereis | 查找命令,将命令压缩包位置列出 |
PATH
-->/etc/profile
/bin --> Linux管理命令
/usr/sbin --> Linux基本命令
/usr/local/bin --> 用户自定义的,为所用用户通用脚本放置路径
/usr/local/sbin --> Linux管理员命令
/home/scy/.local/bin -->
/home/scy/bin --> 用户自定义脚本的放置位置
--> ~/.bash_profile
文本编辑
- 文本编辑器
- Linux自带vi编辑器,此编辑器没有用高亮提示。
- 可自行下载vim编辑器,【yum -y install vim】。
- vim快捷操作
模式 | 命令 | 说明 |
---|---|---|
一般模式(ESC) | yy | 复制一行 |
p | 粘贴一行 | |
dd | 删除一行 | |
u | 撤销操作 | |
/ | 查找关键字 | |
编辑模式(o,i,a) | home | 首行 |
end | 末行 | |
pageup | 翻页 [上] | |
pagedown | 翻页 [下] | |
命令模式(Crtl+c,ESC) | :w | 保存 |
:q | 不保存退出 | |
:wq | 保存退出 | |
:w! | 强制保存 [可能会改变用户或用户组] | |
:q! | 强制退出不保存 | |
:wq! | 强制退出保存 |
文件处理
命令 | 示例 | 功能 | 参数 | 备注 |
---|---|---|---|---|
`cat web.xml | more` | 管道,将前面命令的输出结果作为后面命令的输入 | ||
grep | `more web.xml | grep html` | 在响应的文件正宗筛选出包含特定字符或模式的行 | grep 字符 文件 |
cut | 见表格下方cut示例 | 根据特定分隔符筛选列 | [-f]:输入一个数字,获取分割后的列数中的数据 | |
[-d]:指定分隔符,分割符需要使用’ ‘和” ”进行包含 | ||||
awk | 见表格下方awk示例 | 文本处理工具 | ||
sed | 流编辑器 |
cut示例:
#>ifconfig | grep broadcast
inet 192.168.163.201 netmask 255.255.255.0 broadcast 192.168.163.255
#>ifconfig | grep broadcast | cut ' ' -f 10
192.168.163.255
awk示例:
#>ifconfig | grep broadcast
inet 192.168.163.201 netmask 255.255.255.0 broadcast 192.168.163.255
#>ifconfig awkl -F ' ' '{/broadcast/{print $2}}'
192.168.163.255
压缩解压
命令 | 示例 | 功能 | 参数 | 备注 |
---|---|---|---|---|
tar | tar -zcvf 压缩文件名 要压缩的目录或文件 |
压缩/解压gz格式的文件 | [-z]:使用gzip | |
[-j]:使用bzip2 | ||||
[-c]:创建新压缩包 | ||||
[-x]:解压压缩包 | ||||
[-v]:显示详细输出 | ||||
[-f]:指定压缩包名称 | 压缩文件是,建议将目标文件放在一个目录总 | |||
gzip | 只能压缩,不能解压,会将之前的文件删除 | |||
zip | zip 压缩包名 解压名 |
压缩zip格式的文件 | [-c]:create 创建 | |
[-m]:modify 修改 | ||||
unzip | unzip 压缩包名 解压名 |
解压zip格式的文件 | 使用unzip之前注意将zip文件放在一个父级目录下 |
用户与组
用户操作
用户密码
- passwd 用户名:设置用户密码
用户命令
useradd useradd uname
userdd -g mysql -G nginx
新建用户 [-g]:主组 [-G]:附加组 ~当主组失效,附加组生效 ~用户创建过程: 1./etc/passwd文件汇总记录用户信息 2./home/创建该用户主目录 3./var/spool/mail/创建用户邮件池 usermod usermod uname
修改用户 [-L]:锁定用户 [-U]:解锁用户 [-l]:修改用户名 [-g]:修改主组 [-G]:修改附加组 不能通过su测试,su是切换用户不是登陆用户 userdel userdel uname
删除用户 [-r]:删除用户所有信息 ~r命令会删除用户所有信息 ~不使用r命令,则会保存用户信息,当用户重新被创建时会自动找到文件等 查看用户
查看特定用户
id usr1
uid=1001(usr1) gid=1012(usr1) 组=1012(usr1)
查看当前系统所有已登录用户
who
查看当前系统登陆的用户名字
whoami
切换用户:登陆用户不建议超过6个(内存问题)
su uname
:使用登陆用户之前的用户环境变量(可使用$export将用户变量升级成系统变量)su - uname
:重新加载用户环境变量- /etc/profile:全局变量
- ~/.bash_profile:用户变量
查看所有用户
cat /etc/passwd
用户名 用户编号 用户组 主目录位置 脚本编译环境
usr1:x:1001: 1012:: /home/usr1: /bin/bash
组操作
命令 示例 功能 参数 备注 groupadd gname 新增工作组 groupmod gname 修改工作组 groupedel gname 删除工作组 groups `cat /etc/group groups` 查看工作组 1.查看当前系统中所有的组信息 2.查看当前登陆系统用户的用户组
所有权限
- 文件权限
权限示例
权限字符 用户 用户组 -rw-r--r-- 1 root root 17500 5月 3 2017 test
除(-)后面9位,每三位表示一组权限
权限说明
用户 和 用户组 的关系:用过给用户设置用户组,批量管理用户的操作权限
root用户是超级管理员,拥有所有文件和目录的所有权限
Linux通过权限字符、用户、用户组三个信息确定当前登陆用户具备某个文件的某个权限
创建目录的默认权限:755(rwx- -xr-r- -)
创建文件的默认权限:644(rw-r- -r -)
用户主目录默认权限:700(rwx- - - - - -)
权限原理
ll —> - rwx rwx rwx ( 000~777 ) 四部分组成
- 文件 | d 目录 | l 软连接:
a=当前登陆用户 b=文件所属用户 c=登陆用户的组 d=文件所属组 u:user(第一个rwx) a=b 当登陆的用户 = 文件所属用户时 user权限生效 g:group(第二个rwx) a≠b,c=d 当登陆的用户 ≠文件所属用户,登陆用户的组 = 文件所属组 group权限生效 o:other(第三个rwx) a≠b,c≠d 当登陆的用户 ≠ 文件所属用户,登陆用户的组 ≠ 文件所属组 other权限生效 ugo权限(user,group,other):
简写 全写 意义 二进制 十进制 r read 可读 4 100 w write 可写 2 10 x execute 可执行 1 1 - NULL 无权限 0 0
- 修改权限
不能修改用户不用的文件权限
命令 示例 功能 参数 备注 chown chown 用户 [:用户组] 文件
修改文件所属用户、用户组 [-R]:选项可修改目录 chgrp chgrp 用户组 文件
修改文件所属组 [-R]:选项可修改目录 只可以修改用户组 chmod chmod a+x 文件
chmod 777 文件
修改文件权限字符 u/g/o [+-] r/w/x -x:代表去掉所有执行权限 a+x:代表加上所有权限 ~也可通过二进制代码赋权 sudo 借用root的权限执行某些命令 `#Allow root to run any commands anywhere #允许root用户执行任意路径下的任意命令# root ALL=(ALL) ALL` vim /etc/sudoers
~需要编辑该文件,在其中添加如下代码: 用户名 ALL =(ALL) ALL
文件格式权限
- 配置文件 :r权限
- 日志文件 :r权限,w权限
- 脚本文件 :x权限
- 压缩文件 :解压需要r权限
- 目录权限 :r权限,x权限
日期时间
命令 | 示例 | 功能 | 参数 | 备注 |
---|---|---|---|---|
date | date |
显示当前系统时间 | 默认格式 | 2024年 11月 12日 星期二 14:16:24 CST |
%Y | YEAR | 获取4位年 | ||
%y | year | 获取2位年 | ||
%m | month | 获取月份 | ||
%d | day | 获取日期 | ||
%H | hour | 获取小时 | ||
%M | minute | 获取分钟 | ||
%S | second | 获取秒数 | ||
%s | stamp | 获取时间戳(1970年1月1日—至今秒数) | ||
cal | cal |
显示日历 | [year]:显示指定年日历 | 默认显示当年当月日历 |
- 设置时间
- [-s] :设置系统时间(不建议设置)
touch start_date_$(date + %s).bat
:给文件添加时间戳
- 日期计算
date -d 'n [years|months|days|hours|minutes|seconds] ago’
- [-d] ‘3 years ago’ :三年以前
- [-d] ‘-2 days ago’:两天后
eg:拼接格式化字符以格式化字符串
2024-11-22 14:22
2024/11/22 14:22
- 答案
date '+%Y-%m-%d %H:%M' date '+%Y/%m/%d %H:%M'
网络管理
查看网卡信息
vi /etc/sysconfig/network-scripts/ifcfg-ensXX 此条命令用于编辑网卡配置信息 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static"#DHCP/static,手动配置ip需设置为静态 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPADDR="192.168.76.130"#ip地址 NETMASK="255.255.255.0"#子网掩码 GATEWAY="192.168.76.2"#默认网关 DNS1="114.114.114.114"#主DNS DNS="8.8.8.8"#副DNS IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens32"#网卡名称 UUID="a3f35dbc-00dd-43a0-ad0e-e35843e9706f" DEVICE="ens32" ONBOOT="yes"#开机自启动选项
网卡操作命令
命令 示例 功能 参数 备注 service network service network restart
操作网卡服务 start restart stop status 启动 重启 停止 状态 curl curl -l scy.pet
测试网络连通性 如果返回网页html代码则连通成功 netstat netstat -nult
查看网络状态 [-n]:直接使用ip地址,不通过域名 [-u]:显示UPD传输协议连接状况 [-l]:显示监控中的服务器socket [-t]:显示TCP传输协议连接状况 扩展: 查看防火墙状态 systemctl status firewalld 重新加载防火墙 firewall-cmd - -reload iptables 防火墙管理工具 内容较多暂不补充 a、看防火墙有没有放开1521端口和3306端口: --1.查看端口是否被占用: netstat -nult | grep 1521 netstat -nult | grep 3306 --2.查看防火墙是否放开相应端口: firewall-cmd --zone=public --query-port=3306/tcp b、放开相关端口: firewall-cmd --zone=public --add-port=3306/tcp --permanent c、新加载防火墙策略 firewall-cmd --reload
远程命令
SSH命令
1.远程登陆操作 ssh在执行后,会在用户主目录中创建一个(.ssh)的目录,里面包含一个文件 known-hosts(记录允许登陆的ip) 注:如果没有执行ssh localhost-->exit,即可生成 2.无密码访问 **·**ssh-keygen -t rsa:使用rsa算法生成公私密钥对 **·**ssh-copy-id **目标主机地址:将密钥发送给目标主机,目标主机记录下密钥 钥之后,实现免密登陆** 注:id_ras id_ras_pub(公私密钥对文件名) *~~ssh-copy-id root@127.0.0.1~~*
SCP命令
- 用法
1.当前主机 -> 目标主机: scp [-r] 当前主机的文件 目标主机的位置 scp game.zip root@192.168.163.21:~/ 2.目标主机 -> 当前主机: scp [-r] 目标主机的位置 当前主机的文件 scp root@limux11:~/game.zip ~/ 3.目标主机写法:用户名@IP:/路径 可以通过编辑/etc/hosts文件给特定地址命名别名, 后续可以使用别名代表ip地址 vi /etc/hosts 192.168.163.219 linux11 注:使用前通过*ps -ef | grep ssh*查看ssh服务是否 开启
- 细节
1.scp依赖于ssh协议,首先保证两台机器都开启了sshd服务。 2.scp尽量不要再非安全网络下使用 3.scp传输文件时需要输入密码,可以设置ssh免密登陆,屏蔽密码
rsync命令
远程传输 不是linux自带工具
系统资源
系统资源:CPU 内存 硬盘 网络
显示系统资源
Top:类似于windows中的资源管理器
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 125396 3916 2524 S 0.0 0.2 0:22.18 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.17 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
名称 解释 PID 进程id USER 进程所有者的用户名 PR 优先级 NI nice值。负值表示高优先级,正值表示低优先级 VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES 进程使用的、未被换出的物理内存大小,单位kb。 SHR RES=CODE+DATA,共享内存大小,单位kb S 进程状态。①D=不可中断的睡眠状态②R=运行③S=睡眠④T=跟踪/停止⑥Z=僵尸进程 %CPU 上次更新到现在的CPU时间占用百分比 %MEM 进程使用的物理内存百分比 TIME+ 进程使用的CPU时间总计,单位1/100秒 COMMAND 命令名/命令行 ps:列出进程
-ef
UID PID PPID C STIME TTY TIME CMD root 1 0 0 20:38 ? 00:00:01 /usr/lib/sys root 2 0 0 20:38 ? 00:00:00 [kthreadd] root 3 2 0 20:38 ? 00:00:00 [ksoftirqd/0 root 5 2 0 20:38 ? 00:00:00 [kworker/0:0
名称 解释 UID 用户ID PID 进程ID PPID 父进程ID C CPU使用率 STIME 启动时间 TTY 终端类型 TIME CPU时间 CMD 命令名/命令行 -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 194100 7220 ? Ss 20:38 0:01 /usr/lib/systemd/system root 2 0.0 0.0 0 0 ? S 20:38 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 20:38 0:00 [ksoftirqd/0]
名称 解释 USER 启动该进程的用户 PID 进程ID %CPU 进程占用的CPU百分比 %MEM 进程占用的物理内存百分比 VSZ 进程使用的虚拟内存大小(以KB为单位) RSS 进程使用的常驻集大小(Resident Set Size),即实际物理内存使用量(以KB为单位) TTY 程关联的终端类型。 ?
表示该进程没有关联终端STAT 进程状态。①D=不可中断的睡眠状态②R=运行③S=睡眠④T=跟踪/停止⑥Z=僵尸进程 START 进程启动时间或日期 TIME 进程使用的CPU时间总和 COMMAND 启动进程的命令及其参数 -o
ps -aux
注意:
ps -aux
和ps -ef
都是用来查看系统进程的命令,但它们的输出格式和侧重点略有不同。ps -aux
更侧重于显示与用户和终端相关的进程信息,而ps -ef
则提供了更详细的进程树和父进程信息。选择哪个命令取决于你的具体需求。
显示磁盘资源
df :检查文件系统磁盘使用情况的工具
名称 解释 Filesystem 文件系统名称或挂载点 Size 文件系统的总大小 Used 已使用的磁盘空间 Avail 可用的磁盘空 Use% 已使用空间的百分比 Mounted on 文件系统的挂载点 Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 46G 5.5G 40G 13% / devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 13M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sda1 1014M 157M 858M 16% /boot tmpfs 394M 12K 394M 1% /run/user/42 tmpfs 394M 0 394M 0% /run/user/0
fdisk:磁盘管理工具
注意:此工具使用较少,能看懂即可
挂载功能
①系统装机时可以对硬盘进行分区, 也是挂载目录的操作。 ②windows中的盘符 像 linux的挂载点(分区)。 ③/dev : 显示设备的目录,主要显示接入服务器的硬件设备,光盘、U盘等。 /mnt : 挂载目标目录。 ------------------------------------------------------------ mkdir -p /mnt/sr1 mount /dev/sr1 /mnt/sr1 mv /mnt/sr1/1.txt ~/
定时任务
crontab
命令 功能 选项 crontab 定时任务 [-e]:编辑crontab定时任务 [-l]:查询crontab任务 [-r]:删除当前用户所有crontab任务 语法
* * * 命令
项目 含义 范围 第一个 * 一小时当中的第几分钟 0 ~ 59 第二个 * 一天当中的第几小时0 0 ~ 23 第三个 * 一个月当中的第几天 1 ~ 31 第四个 * 一年当中的第几月 1 ~ 12 第五个 * 一周当中的星期几 0 ~ 7(0和7都代表星期日) 特殊符号
特殊符号 含义 * 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思。 , 代表不连续的时间。比如"08,12,16 * * *命令",就代表在每天的8点0分,12点0分,16点0分都执行一次命令 - 代表连续的时间范围。比如"05 * * 1-6命令",代表在周一到周六的凌晨5点0分执行命令 */n 代表每隔多久执行一次。比如"*/10 * * *命令”,代表每隔10分钟就执行一遍命令