Linux 命令
小柔的 2024-08-04 10:37:01 阅读 99
Linux 命令
1.网络配置
使用ifconfig查找虚拟机现有的网络配置,来判断ens32还是ens33
进入网络配置文件所在路径,采用ls查看路径下的所有文件
<code>vim /etc/sysconfig/network-scripts/ifcfg-en32
编辑ifcfg-ens32文件
vim ifcfg-ens32
更改为:
DHCP->static
onboot='no'->yes(开机自启)code>
IPADDR=192.168.XXX.100
NETMASK=255.255.255.0
GATEWAY=192.168.XXX.2
DNS1=223.5.5.5
DNS2=180.76.76.76
备注:IPADDR和GATEWAY前面三位根据vM8网络相同
DNS1和DNS2为阿里免费的DNS
在命令行:
<code>systemctl restart network (网络重启)
2.关闭界面化
命令行:
systemctl set-default multi-user.target
下一步:
reboot(重启)
3.命令行的含义以及基础操作
含义:
示例:root@app00:~#
root //用户名,root为超级用户
@ //分隔符
app00 //主机名称
~ //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下)
关闭系统
(1)立刻关机
shutdown -h now 或者 poweroff
(2)两分钟后关机
shutdown -h 2
重启
(1)立刻重启
shutdown -r now 或者 reboot
(2)两分钟后重启
shutdown -r 2
命令说明书
man shutdown //打开命令说明后,可按"q"键退出
切换用户
su yao //切换为用户"yao",输入后回车需要输入该用户的密码
exit //退出当前用户
4.目录结构
bin | 存放二进制可执行文件(ls,cat,mkdir等)* |
---|---|
boot | 存放用于系统引导时使用的各种文件 |
dev | 存放设备文件 |
etc | 存放系统配置文件* |
home | 存放所有用户文件的根目录 |
lib | 存放跟文件系统中的程序运行所需要的共享库及内核模块 |
proc | 虚拟文件系统,存放当前内存的映射 |
usr | 存放系统应用程序,比较重要的目录/usr/local 管理员软件安装目录 |
var | 存放运行时需要改变数据的文件* |
mnt | 挂载目录 |
sbin | 存储管理级别的二进制执行文件 |
root | 超级用户主目录(家目录) |
opt | 额外安装的可选应用程序包安装位置 |
目录操作
切换目录
<code> cd / //切换到根目录
cd /bin //切换到根目录下的bin目录
cd ../ //切换到上一级目录 或者使用命令:cd ..
cd ~ //切换到home目录
cd - //切换到上次访问的目录
cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错
cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全
查看目录
ls //查看当前目录下的所有目录和文件
ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样
ls /bin //查看指定目录下的所有目录和文件
创建目录
mkdir tools //在当前目录下创建一个名为tools的目录
mkdir /bin/tools //在指定目录下创建一个名为tools的目录
mkdir -p <directory>递归创建目录
mkdir -p xxx/xxx在创建目录时可以递归创建,上级目录不存在也不报错
删除目录与文件
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
rm -r 文件夹名 //递归删除当前目录下此名的目录
rm -rf 文件夹名 //递归删除当前目录下此名的目录(不询问)
rm -rf * //将当前目录下的所有目录和文件全部删除
rm -rf /* //将根目录下的所有文件全部删除【慎用!相当于格式化系统】
修改目录
mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作
mv /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录剪切到 /opt目录下面
mv -r /usr/tmp/tool /opt //递归剪切目录中所有文件和文件夹
搜索目录
find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录
查看当前目录
pwd //显示当前位置路径
5.文件权限
文件操作
新增文件
touch a.txt //在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间
删除文件
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
编辑文件
vi 文件名 //打开需要编辑的文件
--进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
命令模式
-刚进入文件就是命令模式,通过方向键控制光标位置,
-使用命令"dd"删除当前整行
-使用命令"/字段"进行查找
-按"i"在光标所在字符前开始插入
-按"a"在光标所在字符后开始插入
-按"o"在光标所在行的下面另起一新行插入
-按":"进入底行模式
插入模式
-此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
-按"ESC"进入底行模式
底行模式
-退出编辑: :q
-强制退出: :q!
-保存并退出: :wq
## 操作步骤示例 ##
1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车 //保存并退出编辑
2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车 //撤销本次修改并退出编辑
## 补充 ##
vim +10 filename.txt //打开文件并跳到第10行
vim -R /etc/passwd //以只读模式打开文件
查看文件以及大小
cat a.txt //查看文件最后一屏内容
less a.txt //PgUp向上翻页,PgDn向下翻页,"q"退出查看
more a.txt //显示百分比,回车查看下一行,空格查看下一页,"q"退出查看
tail -100 a.txt //查看文件的后100行,"Ctrl+C"退出查看
du -a统计全部目录及其子目录下的每个档案所占的磁盘空间
du -h统计全部目录及其子目录所占的磁盘空间
du -ch <dir>统计对应目录及子目录所占空间并添加total
du -sh <dir>直接统计总大小
cat显示文本内容,类似windows中的type(顺序输出)
tac显示文本内容(cat的倒序输出)
cat file1 file2 > file3文件合并
cat -b 显示行号输出
分屏显示 more / less
用一次显示一屏,没有显示完时最后一行显示进度。
回车显示下一行,按b显示上一页,空格显示下一页,q退出。
文件权限划分
读写的权限可以分别写成 r, w, x
总共有九个权限,可以分组三大组分别是:
user:当前文件所属用户的权限
group:与当前文件所属用户同一组的用户权限
others:其他用户的权限
故使用 u, g, o 来代表三种身份的权限,此外还有a,代表all,即所有用户
如需修改权限,可使用chmod命令,具体操作如下所示:
对于文件和目录来说,r,w,x有着不同的作用和含义:
针对文件:
w:修改文件内容
x:执行权限对除二进制程序以外的文件没什么意义
针对目录
r:查看目录下的文件列表
w:删除和创建目录下的文件
x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
修改文件访问权限的方法
通过chown命令可以修改文件所有者和文件关联组,进而也能影响权限
命令格式:chown [-cfhvR] [--help] [--version] user[:group] file...
参数 :
user : 新的文件拥有者的使用者
group : 新的文件拥有者的使用者组(group)
-c : 显示更改的部分的信息
-f : 忽略错误信息
-h :修复符号链接
-v : 显示详细的处理信息
-R : 处理指定目录以及其子目录下的所有文件
--help : 显示辅助说明
--version : 显示版本
例如:chown shujia:shujiagrp file1.txt
指令名称 : chmod(修改文件权限)
使用权限 : 所有使用者
使用方式 : chmod [-cfvR] [–help] [–version] mode file…
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
# 将文件权限改为rx rwx x
chmod 571 文件
r----4
w----2
x----1
用户和用户组
添加用户
使用useradd即可增加一个用户
命令格式:useradd 选项 用户名
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
用户名:
指定新账号的登录名
删除或修改用户
如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录
删除一个已有的用户账号使用userdel命令,其格式:userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除
例如:userdel -r sam
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式:usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值
例如:usermod -s /bin/ksh -d /home/z -g developer sam
修改密码
用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令
指定和修改用户口令的Shell命令是passwd
超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令
命令的格式为:passwd 选项 用户名
可使用的选项:
-l 锁定口令,即禁用账号
-u 口令解锁
-d 使账号无口令
-f 强迫用户下次登录时修改口令
增加用户组
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
增加一个新的用户组使用groupadd命令。其格式:groupadd 选项 用户组
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
例如:groupadd group1
此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1
删除或修改用户组
如果要删除一个已有的用户组,使用groupdel命令,其格式:groupdel 用户组
例如:groupdel group1
此命令从系统中删除组group1
修改用户组的属性使用groupmod命令,其格式:groupmod 选项 用户组
常用的选项有:
-g GID 为用户组指定新的组标识号
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字
例如:groupmod –g 10000 -n group3 group2
此命令将组group2的标识号改为10000,组名修改为group3
打包与解压
说明
.zip、.rar //windows系统中压缩文件的扩展名
.tar //Linux中打包文件的扩展名
.gz //Linux中压缩文件的扩展名
.tar.gz //Linux中打包并压缩文件的扩展名
打包文件
<code> tar -zcvf 打包压缩后的文件名 要打包的文件
参数说明:z:调用gzip压缩命令进行压缩; c:打包文件; v:显示运行过程; f:指定文件名;
示例:
tar -zcvf a.tar file1 file2,... //多个文件压缩打包
解压文件
tar -zxvf a.tar //解包至当前目录
tar -zxvf a.tar -C /usr------ //指定解压的位置
unzip test.zip //解压*.zip文件
unzip -l test.zip //查看*.zip文件的内容
unzip 命令可以查看和解压缩 zip 文件。该命令的基本格式如下:
此命令常用的选项以及各自的含义如表所示。
vim详细操作
查找文本
在命令模式下输入英文状态的下的/
替换文本
快捷方向键
光标以单词为单位移动
Vim光标移动至行首或行尾
Vim光标移动至指定字符
Vim光标移动到指定行
撤销和恢复撤销的命令
Vim批量注释和自定义注释
<code>Vim批量注释和自定义注释
使用 Vim 编辑 Shell 脚本,在进行调试时,需要进行多行的注释,每次都要先切换到输入模式,在行首输入注释符"#"再退回命令模式,非常麻烦。
连续行的注释其实可以用替换命令来完成。换句话说,在指定范围行加"#"注释,可以使用 ":起始行,终止行 s/^/#/g",例如:
表示在第 1~10 行行首加"#"注释。"^"意为行首;"g"表示执行替换时不询问确认。如果希望每行交互询问是否执行,则可将 "g" 改为 "c"。
取消连续行注释,则可以使用 ":起始行,终止行s/^#//g",例如:
意为将行首的"#"替换为空,即删除。
设置行号
vim设置显示行号
vim设置不显示行号
永久显示行号
在 ~/ 目录下建立 .vimrc 文件,并在其中添加 set nu 代码,关闭保存该文件即可。
netstat详解
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
语法:
说明:(还有很多选项大家可以自己查询)
<code>netstat -ntulp |grep 8888
df命令详解
Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
语法:
<code>文件-a, --all 包含所有的具有 0 Blocks 的文件系统
文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
文件-i, --inodes 列出 inode 资讯,不列出已使用 block
文件-k, --kilobytes 就像是 --block-size=1024
文件-l, --local 限制列出的文件结构
文件-m, --megabytes 就像 --block-size=1048576
文件-t, --type=TYPE 限制列出文件系统的 TYPE
文件-T, --print-type 显示文件系统的形式
文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
文件-v (忽略)
文件--help 显示这个帮手并且离开
文件--version 输出版本资讯并且离开
ps命令详解
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
语法:
参数:(仅列出几个常用的参数并大略介绍含义)
<code>-A 列出所有的进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
-w 显示加宽可以显示较多的资讯
实例:
查找指定进程格式:
ps -ef | grep 进程关键字
显示 php 的进程:
ps -ef | grep php
显示进程信息
ps -A
显示指定用户信息
ps -u root //显示root进程用户信息
显示所有进程信息,连同命令行
ps -ef //显示所有命令,连带命令行
find命令详解
Linux find 命令用于在指定目录下查找文件和目录。
它可以使用不同的选项来过滤和限制查找的结果。
语法:
参数说明:
path 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
实例:
管道命令“|”
作用就是将前一个命令的输出作为后一个命令的输入。
grep 命令(查找)
语法
<code>grep [options] pattern [files]
或
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
pattern - 表示要查找的字符串或正则表达式。files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
常用选项::
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。
Linux常用操作补充
yum
基本使用
安装:yum install 包名
yum install telnet
卸载:需要借助rpm进行卸载
换源
参考https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b115Ci1Y6
备份原有的源配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
从阿里官方网站下载对应系统版本的源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
由于我们是非ECS用户,所以源配置文件中包含aliyuncs.com地址访问不了
故对其进行移除
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
重新构建本地缓存
yum makecache
systemctl
管理系统以及用户的服务
NetworkManager
network
防火墙:firewalld
系统服务都在:/usr/lib/systemd/system该目录中,都是以xxx.service形式存在
启动:systemctl start firewalld
停止:systemctl stop firewalld
重启:systemctl restart firewalld
查看状态:systemctl status firewalld
开机自启:systemctl enable firewalld
取消开机自启:systemctl disable firewalld
修改主机名
便于区分不同的虚拟机(主机)
修改完之后需要重新连接即可生效,不需要重启系统
hostnamectl set-hostname zs
# 修改文件的方式 需要重启
vim /etc/hostname
# 将原内容删除后 修改为自己的主机名
master
修改hosts
配置IP地址和名称的映射关系
后续如果要使用IP地址的时候,则可以直接使用名称代替
vim /etc/hosts
# 增加内容
192.168.xxx.100 master
同样在Windows中也能修改hosts
进入C:\Windows\System32\drivers\etc目录
修改环境变量
环境变量:本质上是很多路径
当系统执行命令时,会去环境变量中的路径里查找有无该命令,有即执行,没有就会提示命令找不到
配置环境变量就是告诉系统去哪些位置找我们需要的命令
vim /etc/profile
# 一般配置在文件的尾部 先配置一个XXX_HOME,然后再将其HOME下的bin目录配置在环境变量PATH中
MY_SCRIPTS_HOME=/root/scripts
export PATH=$MY_SCRIPTS_HOME/bin:$PATH
# 配置完之后记得source 才能生效
source /etc/profile
安装JDK环境
上传到虚拟机
解压
mkdir /usr/local/soft
tar zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/soft
修改环境变量
vim /etc/profile
# 在文件尾部加入以下内容
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HADOOP_HOME=location
export PATH=$JAVA_HOME/bin:$HADOOP/bin:$HADOOP/sbin:$PATH
# 保存退出之后 记得source
source /etc/profile
修改配置文件(省略)
进行初始化工作(省略)
测试
# 查看当前系统中运行了哪些JAVA进程
jps
# 查看JAVA的版本号
java -version
# 输出
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
nohup
后台运行
nohup sh demo13.sh > a.log 2>&1 #后台运行,标准输入和标准输出重定向
nohup command > file 2>&1
crontab
定时调度
# 进入文件写定时任务
crontab -e
# 以列表的形式展现定时任务
crontab -l
备注:指定定时执行的文件 文件用绝对路径
* * * * * sh demo13.sh(command)
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
23 23 23 11 * -> 11月23日23时23分执行这个定时任务
*/5 */12 * * * -> 每隔十二小时的每五分钟执行一次
*/30 6-12/3 * * * -> 6-12点每隔三个小时的三十分钟执行一次
0 1 * * 3 -> 每周三1点的定时任务
ssh
免密登录
时区配置
查看当前时区:timedatectl
查看所有时区:
cd /usr/share/zoneinfo/
ls
修改时区
timedatectl set-timezone Asia/Shanghai
同步时间
# 基于阿里云NTP服务器同步时间
ntpdate ntp.aliyun.com
# 将时间写入硬件,避免重启失效
clock -w
sed
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明
-e
awk
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
语法
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
参数说明
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value
赋值一个用户定义变量。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。