Linux目录结构
/:Linux中没有盘符,根目录为"/"
**/bin:**存放系统命令的目录,所有用户都可以执行.
**/sbin:**保存和系统环境设置相关的命令,只有超级用户可以使用这些命令,有些命令可以允许普通用户查看。
**/home:**用户缺省宿主目录 添加新用户 home会有对应用户的文件夹
**/etc:**系统配置文件
**/dev:**存放设备文件 网卡 声卡 显示 CD 打印机
**/mnt:**挂载目录。临时文件系统的安装点,默认挂载光驱和软驱的目录
**/media:**挂载目录。 挂载媒体设备,如软盘和光盘
**/opt:**第三方安装的软件保存位置。 习惯放在/usr/local/目录下
/usr: 系统软件共享资源目录,存放所有命令、库、手册页等
**/root:**存放root用户的相关文件,root用户的家目录。宿主目录 超级用户 我们进入系统默认在root目录下
基础命令
cd切换文件夹
英文:change directory 命令路径:内部命令 执行权限:所有用户
作用: 切换目录
语法:cd 目录
Linux绝对路径
/路径
/aaa/bbb/ccc
Linux相对路径 不是根目录开头的路径
./ 当前目录
../ 上一级目录
../../ 上两级目录
cd ..返回上一级目录
cd / 切换到根目录
cd /root 使用绝对路径进入到root目录
cd root 使用相对路径进入到root目录
cd ./root 使用相对路径进入到root目录
cd - 显示并打开到上一次操作的目录
pwd显示当前目录
英文:print working directory 命令路径:/bin/pwd 执行权限:所有用户
作用:显示当前工作目录
语法:pwd
ls 查看目录下文件
英文:list 命令路径:/bin/ls 执行权限:所有用户
作用:显示目录文件
语法:ls [-alrRd] [文件或目录]
-a (all) 显示所有文件,注意隐藏文件,特殊目录.和..
-l (long) 显示详细信息
-R(recursive) 递归显示当前目录下所有目录
-r (reverse) 逆序排序
-t (time) 按修改时间排序(降序)
ll 相当于 ls –l
ls查看当前目录下的文件
[root@localhost /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
ls -a 显示所有文件 包括隐藏文件
[root@localhost /]# ls -a
. bin dev home lib64 mnt proc run srv tmp var
.. boot etc lib media opt root sbin sys usr
ls -l 显示详细信息
[root@localhost /]# ls -l
total 20
lrwxrwxrwx. 1 root root 7 Nov 18 02:08 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Nov 18 02:18 boot
drwxr-xr-x. 20 root root 3240 Nov 18 03:10 dev
drwxr-xr-x. 75 root root 8192 Nov 18 04:42 etc
drwxr-xr-x. 3 root root 17 Nov 18 04:42 home
lrwxrwxrwx. 1 root root 7 Nov 18 02:08 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Nov 18 02:08 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Nov 5 2016 media
drwxr-xr-x. 2 root root 6 Nov 5 2016 mnt
注意:linux中 d开头的是文件夹 -开头的是文件 l开头的快捷方式
ls -l 可以简写成 ll
mkdir创建文件夹
英文:make directories 命令路径:/bin/mkdir 执行权限:所有用户
作用:创建新目录
语法:mkdir [-p] 目录名
-p 父目录不存在情况下先生成父目录 (parents)
mkdir /root/aaa 在root下创建aaa文件夹
mkdir /root/bbb /home/ccc 在root下创建bbb文件夹 在home下创建ccc文件夹
mkdir -p /root/aa/bb/cc -p可以创建多级文件夹 在/root下创建 aa/bb/cc文件夹
touch创建文件
命令路径:/bin/touch 执行权限:所有用户
作用:创建空文件或更新已存在文件的时间
语法:touch 文件名
eg:# touch a.txt b.txt touch {a.txt,b.txt} 同时创建多个文件
创建带空格的文件 eg:touch "program files" 在查询和删除时也必须带双引号
注意:生产环境中,文件名,一定不要加空格
touch a.txt 在当前目录下创建 a.txt
touch /root/a.txt /root/b.txt /root/c.txt 在root下创建 a.txt b.txt c.txt
touch "1 .txt" 如果文件名中有空格 需要加""
mv移动文件
英文:move 命令路径:/bin/mv 执行权限:所有用户
作用:移动文件或目录、文件或目录改名
语法:mv 源路径 目标路径
mv a.txt b.txt 将当前目录的a.txt改为b.txt
mv b.txt /home 将当前目录下的b.txt移动到home文件夹下
mv /root/c.txt /home/ccc.txt 将root下的c.txt移动到home下并改名为ccc.txt
cp复制文件目录
英文:copy 命令路径:/bin/cp 执行权限:所有用户
作用:复制文件或目录
语法:cp [–rp] 源路径..... 目标路径
-r -R recursive 递归处理,复制目录
-p 保留文件属性 (原文件的时间不变)
eg:
1,相对路径 cp –R /etc/* . cp –R ../aaa ../../test/
2,,绝对路径 cp –R /ect/service /root/test/aa/bb
cp a.txt b.txt 将a.txt文件 复制成b.txt 复制并改名
cp -r aa abc 复制文件夹要递归复制 将aa文件夹 复制为 abc文件夹
rm删除
英文:remove 命令路径:/bin/rm 执行权限:所有用户
作用:删除文件
语法: rm [-rf] 路径
-r (recursive)删除目录,同时删除该目录下的所有文件
-f(force) 强制删除文件或目录 即使原档案属性设为唯读,亦直接删除,无需逐一确认
注意:工作中,谨慎使用rm –rf 命令。
乱码文件删除
ll -i 获取到 inum
find -inum 33575027 -delete
rm -rf a.txt 强制删除 a.txt文件
rm -rf aa 强制 递归删除 aa文件夹
echo输出
将内容打印在控制台显示
echo “hello”
echo “hello” > 1.txt 覆盖
echo “hello” >> 1.txt 追加内容
cat显示文件内容
英文:concatenate 命令路径:/bin/cat 执行权限:所有用户
作用:显示文件内容
语法:cat [-n] [文件名]
-A 显示所有内容,包括隐藏的字符
-n 显示行号
eg:cat /etc/services
ln连接
英文: link 命令路径:/bin/ln 执行权限:所有用户
作用:产生链接文件 , 方便操作文件
语法:
ln -s 源文件 快捷方式文件 创建软链接 源文件 使用 绝对路径
ln 源文件 快捷方式文件 创建硬链接
ln -s /root/a.txt /a.txt 在根目录创建一个a.txt 连接 root目录下的a.txt 软连接
软连接 如果源文件不存在了 快捷方式文件 就没有用了 没有对应的文件
ln /root/b.txt /b.txt 在目录下创建一个b.txt 连接 root目录下的b.txt 硬连接
硬连接 b.txt也是一个单独的文件 源文件改变 b.txt也随之改变 源文件被删除 b.txt还可以继续使用
more显示文件内容
命令路径:/bin/more 执行权限:所有用户
作用:分页显示文件内容
语法:more [文件名]
空格或f 显示下一页
Enter键 显示下一行
q或Q 退出
less显示文件内容
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
less [参数] 文件
q 退出查看内容
参数说明:
-N 显示每行的行号
b 向后翻一页
d 向后翻半页
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
g 直达文件首页
G 直接文件末尾
/关键字 搜索关键字(按n找下一个)
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
head查看文件前几行
命令路径:/usr/bin/head 执行权限:所有用户
作用:查看文件前几行(默认10行)
语法:head [文件名]
-n 指定行数
eg:head -20 /etc/services services前20行
tail查看文件后几行
命令路径:/usr/bin/tail 执行权限:所有用户
作用:查看文件的后几行
语法:tail [文件名]
-n 指定行数
-f (follow) 动态显示文件内容
-F 动态显示文件内容
获取一个大文件的部分文件,可使用head或tail命令
head 100 /etc/services >config.log 将 services中前100行 写入到 config.log文件中
-f 依据inode号跟踪,如果目标文件被重命名,则新创建的同名文件不会被跟踪
-F 依据路径名跟踪,如果目标文件被重名,然后创建了同名的新文件,则会继续跟新文件
find查找
根据文件名、路径、文件类型、修改创建时间等信息搜索文件
命令路径:/bin/find 执行权限:所有用户
作用:查找文件或目录
语法:find [搜索路径] [匹配条件]
如果没有指定搜索路径,默认从当前目录查找
find命令选项
-name 按名称查找 精准查找
eg:find /etc -name “init” 在目录/etc中查找文件init
-name 按名称查找
find查找中的字符匹配:
*:匹配所有
?:匹配单个字符
eg:find /etc -name “init???” 在目录/etc中查找以init开头的,且后面有三位的文件
模糊匹配的条件,建议使用单引号或双引号括起来。如果*被转义,可使用 单双引号括住查询条件,或者使用\*。
eg: # find . –name *g
grep关键字查找
命令路径:/bin/grep 执行权限:所有用户
作用:在文件中搜寻字串匹配的行并输出
在命令的输出中搜索内容
语法:grep [-cinv] '关键词' filename
选项与参数:
-c :输出匹配行的次数(是以行为单位,不是以出现次数为单位)
-i :忽略大小写,所以大小写视为相同
-n :显示匹配行及行号
-v :反向选择,显示不包含匹配文本的所有行。
eg:grep ftp /etc/services
ll / | grep dev
gzip压缩
英文:GNU zip 命令路径:/bin/gzip 执行权限:所有用户
作用:压缩(解压)文件,压缩文件后缀为.gz
gzip只能压缩文件,不能压缩目录;不保留原文件
语法:gzip 文件
-d将压缩文件解压(decompress)
解压使用gzip –d或者 gunzip
tar 压缩解压
命令路径:/bin/tar 执行权限:所有用户
作用:文件、目录打(解)包
语法:tar [-zcf] 压缩后文件名 文件或目录
-c 建立一个压缩文件的参数指令(create),后缀是.tar
-x 解开一个压缩文件的参数指令(extract)
-z 以gzip命令压缩/解压缩
-j 以bzip2命令压缩/解压缩
-v 压缩的过程中显示文件(verbose)
-f file 指定文件名,必选项
gzip 文件 文件 文件
gunzip 压缩文件 压缩文件
tar -zcvf my.tar.gz 文件1 文件2 文件3... 打包压缩
tar -zxvf my.tar.gz 解压缩文件
tar -zxvf my.tar.gz -C 文件夹/ 解压缩文件到指定目录
VI编辑器
yy 复制光标所在的行内容
dd 剪切光标所在的行内容 [删除]
p在光标所在的行的下面粘贴
nyy 复制n行
ndd 剪切n行
i光标所在的前面
I 行首
a光标的后面
A 行末
o 下一行
O上一行
:q! 不保存退出
:wq!保存退出
:set nu 显示文本行号
:set nonu 隐藏行号
n G 跳跃光标到第n行
G 跳跃光标到最后一行 o 文档的末尾插入
u 撤销操作
/ str 搜索字符串 n下一个
在linux中安装JDK
1.安装xftp7 从windows上传输一个JDK到Linux中/opt/apps下
2.对/opt/apps下的JDK压缩包进行解压 tar -zxvf jdk-8u191-linux-x64.tar.gz
3.配置 /etc/profile文件 vi /etc/profile
在文件最后添加
export JAVA_HOME=/opt/apps/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin
注意不要忘记/bin
保存退出
4.source /etc/profile
安装成功
网络命令
查看本机的ip地址
ip addr -- 查看本机的IP地址
inet 192.168.133.33/
服务
systemctl start|stop|restart|status 服务名
systemctl status network -- 查看网络服务状态
systemctl stop network
systemctl start network
systemctl restart network
systemctl disable network 开机禁用
systemctl enable network 开机启动
-- 关闭NetworkManager网络服务 避免和network冲突
systemctl status NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
防火墙服务
systemctl status firewalld ****
Active: active (running) since Fri 2021-10-08 23:02:24 CST; 10h ago -- 防火墙在运行
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
systemctl disable firewalld 配置上自动关闭
systemctl enable firewalld
如果报错 重新安装防火墙 yum -y install firewalld.service
我们配置关闭防火墙 systemctl stop firewalld
配置开启禁用 systemctl disable firewalld
主机名
[root@localhost ~]# hostname -- 查看当前主机名
localhost.localdomain
[root@localhost ~]# hostname linux01 -- 临时修改主机名
[root@localhost ~]# hostname
linux01
[root@localhost ~]# vi /etc/hostname -- 修改主机名 永久
[root@localhost ~]# cat /etc/hostname
linux01
--reboot 重启生效
[root@linux01 ~]#
域名
在网路之间所有通信的机器都会分配唯一的ip地址 ,ip是一个机器的唯一标识 , 通过IP地址定位一个机器
将ip映射成一个字符串 使用字符串(域名)映射你的机器
域名映射 :
C:\Windows\System32\drivers\etc
在windows上配置虚拟机的ip映射
C:\Windows\System32\drivers\etc\hosts
192.168.133.33 linux01
在linux上配置windows的域名映射
vi /etc/hosts
192.168.22.2 windows
网络端口查看
netstat
英文:network statistics 命令路径:/bin/netstat 执行权限:所有用户
作用:主要用于检测主机的网络配置和状况
-a all显示所有连接和监听端口
-t (tcp)仅显示tcp相关连接
-u (udp)仅显示udp相关连接
-n 使用数字方式显示地址和端口号
-l (listening) 显示监控中的服务器的socket
-p port
-- 执行命令
[root@linux01 ~]# netstat -nltp | grep 3306
tcp6 0 0 :::3306 :::* LISTEN 1748/mysqld
[root@linux01 ~]# service mysqld stop
Redirecting to /bin/systemctl stop mysqld.service
[root@linux01 ~]# netstat -nltp | grep 3306
[root@linux01 ~]#
注意:如果netstat命令报错 notfound 下载安装
-- 安装网络工具
yum -y install net-tools
Linux安装mysql
-
进入到/opt/apps文件夹
-
yum -y install wget
-
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
-
yum -y install mysql57-community-release-el7-10.noarch.rpm
-
yum -y install mysql-community-server --nogpgcheck
-
systemctl start mysqld
-
netstat -nltp | grep 3306
-
grep “password” /var/log/mysqld.log
2021-11-21T19:13:01.139721Z 1 [Note] A temporary password is generated for root@localhost: hUk5ak36Pn%T
-
mysql -uroot -phUk5ak36Pn%T
-
修改密码
登陆mysql后
#这两个设置后 密码可以简单设置
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
#修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
权限
为了保证系统数据的安全 , 不同的用户对不同的文件具有不同的操作权!
操作权: 读 写 执行
文件
使用root用户根目录创建 a文件夹 在a文件夹中创建1.txt文件
-rw-r--r--. 1 root root 26 Oct 9 19:09 1.txt
用户 组
- 文件类型
rw- 当前用户拥有的权限 r read w write x excute 执行权
r-- 当前用户所属的组
r-- 其他人 其他人对这个文件只有读的权限
[root@linux01 ~]# useradd zss 添加用户 zss
[root@linux01 ~]# su -l zss 切换用户 zss
[zss@linux01 root]$
[zss@linux01 a]$ echo "hello" >> 1.txt 写
bash: 1.txt: Permission denied 权限被拒绝
需要zss修改这个文件 没有写的权限 给zss分配写权限
o other
u user 当前用户
g group 组
a all
chmod a+w 1.txt
chmod o+w 1.txt
chmod u-r 1.txt
*** 给任何用户分配任意权限
u g o
rwx rwx rwx
111 111 111
7 7 7 chmod 777 1.txt
r-x rw- --x
101 110 001 chmod 561 1.txt
文件执行权
在哪linux中脚本文件是可以执行的
vi a.sh
#!/bin/bash
echo "我可以执行..."
echo "我在当前目录下创建文件 aaa.doc"
touch aaa.doc
有了执行权限以后可以直接执行 ./a.sh /a/a.sh
目录权限
文件夹的权限的前提是具有x权限 , 没有x权限其他的权限没有意义
w 写 创建文件 创建文件夹 删除内容 复制移动 重命名
r 读 ls
注意-R递归
ll -R /a 递归查看文件夹中的内容
chmod -R 777 /a 递归修改文件夹和文件夹内所有内容的权限
系统命令
free -h 查看内存
echo 1 > /proc/sys/vm/drop_caches 清除缓存
df -h 查看硬盘
du 查看文件或者是文件夹的大小
-a 显示子文件的大小
-b 字节
-h以易读的方式显示 KB,MB,GB等
du -sh /etc 查看etc下所有文件的总大小 以合适的单位显示
top 查看进程 类似任务管理器
-d 秒数,指定几秒刷新一次,默认3秒(动态显示)
kill -9 PID 强制结束进程
kill -1 pid 重启进程
ps 查看系统中的进程信息
a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的进程
e:显示所有进程,包括没有控制终端的进程
l:长格式显示
ps aux #查看系统中所有进程,使用BSD操作系统格式,unix
ps aux | grep mysql 查看mysql进程
helloword.class java 0101010
pstree 查看当前进程树
minimal版本中可能没有安装这个工具,需要手动安装
yum -y install psmisc
ctrl +z 可以把一个前台运行的程序挂起到后台(挂起,就意味着程序被暂停了)
jobs 查看当前在后台挂起的程序
fg 1 将指定id的job放回前台继续运行
暂时用不到
将一个程序放后台运行的标准写法:
nohup sh back.sh 1>/dev/null 2>&1 &
1>/dev/null : 表示将程序的标准输出重定向到/dev/null 文件
2>&1 : 表示将程序的标准错误输出,重定向到“标准输出通道”
& : 表示将程序放在后台执行
nohup : 表示不要挂起
用户命令
useradd zss 添加用户
userdel -r zss 删除用户并删除home文件
时间管理
手动设置时间
date -s '2021-11-21'
(1)date (功能描述:显示当前时间)
(2)date +%Y (功能描述:显示当前年份)
(3)date +%m (功能描述:显示当前月份)
(4)date +%d (功能描述:显示当前是哪一天)
(5)date "+%Y-%m-%d %H:%M:%S" (功能描述:显示年月日时分秒)
(6)date -d' -1 day' +'%Y-%m-%d' (功能描述:显示前一天时间)
date -d '1 days ago' (功能描述:显示前一天时间)
时间同步
yum -y install ntp
vi /etc/ntp.conf
server npt1.aliyun.com
server time.windows.com
server time.apple.com
启动服务
systemctl start ntpd
systemctl enable ntpd
查看状态
ntpstat
为了让集群中的所有节点都保持时间同步
可以把所有节点都安装上ntpd,并且配好时间同步服务器
或者,也可以,只让节点1去向public同步服务器同步,其他节点向节点1同步
systemctl start ntpd
systemctl enable ntpd
vi /etc/ntp.conf
server linux01