1.基本命令的学习
1.1系统的重启和关机
syns:#将数据由内存同步到磁盘上
shutdown:#关机
shutdown -h now # 立马关机
shutdown -r now #系统立刻重启
shutdown -h 10 #十分钟后关机
reboot # 系统重启
halt # 系统关闭
1.2系统的目录结构
bin //Binary的缩写,一般存放我们经常用指令
boot //存放启动Linux时的核心文件,包括一些连接文件以及镜像文件
dev //存放Linux的外部设备
etc(重要) //这个目录存放所有系统管理所需要的配置文件和子目录
home(重要) //用户的主目录,在Liunx中每个用户都有自己的目录
lib(重要) //存放系统中最基本的动态连接共享库
lost+found //此目录一般为空,系统非正常关机后,这里就存放了文件
media //系统会自动的识别一些设备:比如:U盘,光驱....
mnt //用户临时挂载别的文件的目录
opt() //主机安装额外软件时所需要的目录
proc //是个虚拟目录,它是系统内存的映射
root //系统管理员目录,也是超级管理员目录
tmp() //该目录用来存放一些临时的文件
usr(重要) //用户的许多应用程序和文件都存放在此处,类似于Window下面的program file目录
var() //这个目录存放着不断扩充的东西,习惯的将一些被修改的文件存放在次目录之下,还由一些日志文件。
2.常用的基本指令
2.1目录管理
- ls: 列出目录
[root@Dice /]# ls -a //列出所有文件,包含隐藏文件
[root@Dice /]# ls -l //列出所有文件,包含文件的属性和权限
[root@Dice /]# ls -al //列出所有文件,隐藏目录以及属性和权限
- cd:切换目录
绝对路径:/
相对路径:相对与当前目录,如何寻找
[root@Dice home]# cd home // 在根目录下进入home
[root@Dice home]# cd ../usr //通过绝对路径进入usr
[root@Dice home]# mkdir DiceStudy //创建一个新文件夹
[root@Dice /]# cd /home/DiceStudy //绝对路径进入文件夹
[root@Dice DiceStudy]# cd ~ //回到当前用户目录
[root@Dice ~]# pwd //显示当前用户所在的目录
/root
[root@Dice ~]# cd /bin
[root@Dice bin]# pwd
/bin
- mkdir:创建目录
[root@Dice bin]# cd /home
[root@Dice home]# mkdir() test //home下创建test目录
[root@Dice home]# mkdir -p() test1/test2/test3 //使用-p 参数创建多级目录
- rmdir:删除目录(只可以删除空目录,如果有文件删除文件先)
[root@Dice home]# cd /home
[root@Dice home]# ls
test test1
[root@Dice home]# rmdir() test //删除test目录
[root@Dice home]# ls
test1
[root@Dice home]# rmdir -p() test1/test2/test3 //递归删除层级目录 加 -p参数
- cp:复制文件或者目录
cp 文件原来的地方 新的目录
[root@Dice home]# cp install.sh DiceStudy/
[root@Dice home]# cd DiceStudy/
[root@Dice DiceStudy]# ll
install.sh
- rm:移除文件或者目录
-f : 忽略不存在的文件,不发出警告,强制删除
-r :递归删除目录
-i :互动,询问是否删除
rm -rf目录名 :删除当前目录下所有的文件
rm -rf/ :系统中的所有文件就被删除了(删库跑路的做法)
- mv:移动文件或者目录(重命名文件)
-f :强制移动
-u :只替换已经更新过的文件
[root@Dice home]# ls
DiceStudy install.sh
[root@Dice home]# mv() install.sh DiceStudy(移动文件)
mv: overwrite 'DiceStudy/install.sh'? y
[root@Dice home]# ls
DiceStudy
[root@Dice home]# ls
DiceStudy
[root@Dice home]# mv() DiceStudy DiceStudy2(重命名文件)
[root@Dice home]# ls
DiceStudy2
2.2基本属性
[root@Dice /]# ll
total 28
lrwxrwxrwx. 1 root root 7 May 11 2019 bin
dr-xr-xr-x. 5 root root 4096 Feb 18 2020 boot
- d: 表示是一个目录
- -:表示是一个文件
- l:表示是文档链接
- r:read
- w:write
- x:execute
2.3文件内容查看
- cat:从文件开头的第一行显示文件
- tac:从文件的最后一行开始显示文件的内容
- nl:显示的时候输出行号
[root@Dice network-scripts]# nl ifcfg-eth0
1 # Created by cloud-init on instance boot automatically, do not edit.
2 #
3 BOOTPROTO=dhcp
4 DEVICE=eth0
5 ONBOOT=yes
6 STARTMODE=auto
7 TYPE=Ethernet
8 USERCTL=no
- more:一页一页的显示文件的内容(空格表示翻页,enter读取下一行)
- less:和more的作用相似,但是可以实现向前翻页
- /+字符串:表示从下到上查找对应的字符
- ?+字符串:表示从上到下查找字符串
- q:退出文件查看
[root@Dice etc]# less csh.login
- head:只看头几行 (-n 参数表示行数)
- tail:只看尾巴几行
- 可以通过 man来查看各个命令的使用文档:例如:man cp
- 网络配置目录:
[root@Dice home]# cd /etc/sysconfig/network-scripts/ifcfg-eth0
- ifconfig:查看网络配置
- ping:Ctrl+C 停止ping 命令
2.4拓展:Linux中链接的概念
- 硬链接:允许一个文件有多个目录,用户可以通过这种机制建立硬链接在一些重要的文件上,防止误删。
- 软链接:类似于Window下的快捷方式,删除源文件快捷方式也使用不了了。
3.Vim编辑器
3.1什么是Vim?
- 通过一些插件可以实现和IDEA一样的功能
- 从vi发展过来的一个文本编辑器(查看,编辑,保存内容)
3.2三种模式
- 命令模式
1.进入vim就进入到命令模式
2.按 i切换到输入模式
3.esc退出输入模式,切换到命令模式
4.命令模式下:按 : 进入到底线命令模式
5.wq :保存退出
6.w:将数据写入硬盘文档中
7.w!:若文档显示只读时,强行写入文档
8.q: 离开vim
9.q!:若修改过文档不想存储,则强制离开
10./字符串:搜索字符串
4.Linux的账号管理
4.1实现用户的账号管理:
- 用户账号添加,修改,删除
- 用户口令的管理
- 用户组的管理
4.2命令
- useradd : 添加用户
-m :自动创建这个用户的主目录(/home/Dice)
[root@Dice etc]# useradd -m Dice
[root@Dice etc]# cd /home
[root@Dice home]# ll
Dice
linux中一切皆文件:新建一个用户也就是新建一个文件夹,然后写入用户信息。/etc/passwd
- userdel :删除用户
[root@Dice home]# userdel -r Dice:删除用户,并且清理用户文件
- usermod: 修改用户
参数:
-d:指定用户的主目录
-g:指定用户所述的用户组
-u:指定以用户的用户号
-G:给用户分类组
- 切换用户 su 用户名
[用户名 主机名 当前目录]#超级管理员
[root@Dice home]# su() Dice
[Dice@Dice home]$
/*查看主机名和修改主机名*/
[Dice@Dice home]$ hostname()
Dice
[Dice@Dice home]$ hostname Dice1
- 用户的密码设置
[root@Dice home]# password Dice
Changing password for user Dice.
New password: 密码是不会显示的
//修改root密码
[root@Dice home]# passwd root
Changing password for user root.
New password:
锁定用户
passwd -l Dice//锁定无法登录
5.用户组的管理
属主、属组
- 组的添加,修改,删除本质就是对/etc/group文件进行更新的
- 创建一个用户组:groupadd
[root@Dice home]# groupadd Dices
[root@Dice home]# cat /etc/group
Dices:x:1004:(用户组id)
- 创建组的时候指定id,默认创建时系统会自增id
[root@Dice home]# groupadd -g 520 Dice2
Dices:x:1004:
Dice2:x:520:
- 删除用户组
[root@Dice home]# groupdel Dices
- 用户切换用户组
登录当前用户
$ newgrp root
- 拓展:(文件的查看)
etc/passwd:这个配置文件中每一行代表一个用户,可以查看用户的主目录,和属于哪个组
etc/shadow:加密后的用户口令就存放在此文件中
6.Linux下的磁盘管理
- df:列出系统磁盘的整体使用量
- du:检查当前磁盘的使用量
[root@Dice home]# df()
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 921176 0 921176 0% /dev
tmpfs 936584 0 936584 0% /dev/shm
tmpfs 936584 492 936092 1% /run
tmpfs 936584 0 936584 0% /sys/fs/cgroup
/dev/vda1 41931756 6455720 35476036 16% /
tmpfs 187316 0 187316 0% /run/user/0
[root@Dice home]# df -h() //按照M后者G计算
Filesystem Size Used Avail Use% Mounted on
devtmpfs 900M 0 900M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 492K 915M 1% /run
tmpfs 915M 0 915M 0% /sys/fs/cgroup
/dev/vda1 40G 6.2G 34G 16% /
tmpfs 183M 0 183M 0% /run/user/0
[root@Dice home]#
du -sm /*: 检查根目录下每个文件所占的容量
[root@Dice /]# du -sm /*
0 /bin
198 /boot
0 /dev
23 /etc
197 /home
0 /lib
0 /lib64
0 /media
0 /mnt
0 /opt
1 /patch
du: cannot access '/proc/14932/task/14932/fd/4': No such file or directory
du: cannot access '/proc/14932/task/14932/fdinfo/4': No such file or directory
du: cannot access '/proc/14932/fd/4': No such file or directory
du: cannot access '/proc/14932/fdinfo/4': No such file or directory
0 /proc
150 /redis-6.0.10
1 /root
1 /run
0 /sbin
0 /srv
0 /sys
77 /tmp
56 /user
2624 /usr
218 /var
2200 /www
7.进程管理
作为开发人员,试下使用Linux就可以
7.1什么是进程?
- Linux中每一个程序都有一个进程,每个进程都有一个id号
- 每一个进程都会有一个父进程
- 进程可以有两种存在方式,前台!后台!
- 一般的话服务都会在后台,基本的程序都会在前台
7.1命令
ps:查看当前系统中正在执行的各种进程的信息
参数
-a :显示当前终端的所有进程
-u :以用户信息显示进程
-x :显示后台允运行的参数
# ps-aux :查看所有进程的信息
# | :管道符!!! A|B 左边的命名的结果作为右边的命令
# grep 查找文件中符合条件的字符串
ps -aux|grep mysql (查看关于mysql的所有的进程)
记住命令:ps -xx|grep 进程名字 !!过滤进程信息
- ps -ef|grep 进程名字 查看父进程
- pstree -pu(通过目录树的结构进行查看)
参数解释:
-p : 显示父进程的id
-u : 显示用户组
结束进程:杀掉进程,等价与Window结束任务
kill -9 进程id
一般java代码死循环会使用次命令
8.环境安装(JDK)
8.1软件安装的三种方式:
1.rpm
2.解压缩
3.yum在线安装
8.2jdk安装
1.rpm安装步骤:
命令: rpm -ivh rpm安装包
2.卸载步骤:
1.查看版本信息 rpm -qa|grep jdk 过滤查看jdk的版本信息
2.rpm -e --nodeps 软件名字
8.3环境配置
- 配置环境变量:etc/profile
export JAVA_HOME=/data/program/software/java/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH:JRE_HOME/bin
export JRE_HOME=/data/program/software/java/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
保存配置之后再使用 source /etc/profile刷新配置文件
9.shell编程
1.shell变量
1.系统变量
2.自定义变量
2.变量的定义:
1.基本语法:
定义变量: 变量名=值
销毁变量: unset 变量
静态声明的变量: readonly变量,注意:不可以 unset
#!/bin/bash //头文件
A=100
echo $A
echo A=$A
echo "A=$A"
unset A
echo A=$A
#定义静态的变量B,
readonly B=2
echo "B=$B"
unset B //静态变量不可以unset
3.shell变量的定义规范
1.名称可以由字母和下划线组成,但是不可以由数字开头
2.变量的两侧不可以有空格
3.变量名一般为大写
4.将命令的返回值赋给变量
1.A=
data
反引号,运行反引号里面的命令,并且将结果返回给A
2.A=$(data) 和反引号的作用相同
5.设置环境变量
1.export 变量名=变量值
2.source 配置文件
3.echo $变量名
注:在一个配置文件中定义好一个环境变量之后,可以在其他的shell程序中使用
shell脚本中的多行注释:
set nu:显示vim中代码的行号
:<<!
被注释的内容
!
6.预定义变量
就是shell设计值预先定义好的变量,可以直接在shell中使用
基本语法:
$$ (当前进程的进程号)
$! (后台运行的最后一个进程的进程号)
$? (最后一次执行命令时候返回的状态,如果这个变量的值为0,则证明最后一条命令正确执行,非0结果反之)
7.运算符
基本的语法:
方式一: $((运算式))
方式二: $[运算式]
方式三: expr m + n
注意:+ 号两边要有空格,要想expr的结果赋值给一个变量,那么就要加上
expr 乘(*) 除(/)取余(%)
8.条件判断
基本语法
[ condition ] (注意条件前后是要有空格的)
#非空返回true ; >1则返回false
判断语句
- = 字符串的比较
2.两个整数直接的比较
2.1 lt : 小于
2.2 le: 小于等于
2.3 eq: 等于
2.3 gt: 大于
2.4 ge:大于等于
2.5 ne: 不等于
9.流程控制
多分支
if [条件判断式]
then
代码
elif [条件判断式]
then
代码
fi
注意:中括号和条件判断式中间必须有空格
case语句
基本语法:
case $变量名 in
“值1”)
如果说变量名的值等于值1,就执行程序1
;;
“值2”)
如果说变量名的值等于值1,就执行程序2
…省略其他分支
*)
不满足所有的值,就执行此操作
;;
esac
10.for循环
基本语法:
for 变量 in 值1 值2 值3…
do
程序
done
基本语法2:
for((初始值;循环控制条件;变量变化))
do
程序
done
11.while循环
基本语法:
while [ 条件判断式 ]
do
程序
done
注意 while那一行两两直接都有空格
12.read读取控制台输入
基本语法
选项:
-p : 指定读取值时的提示符
-t : 在读取值时的等待时间,如果指定时间没有输入,就不再等待
参数:
变量:指定读取值的变量名
举例:
#!/bin/bash
read -p "请输入一个数字num1=" num1
echo "num1=$num1"
12.系统函数
13.自定义函数
基本语法:
[ function ] funame[()]
{
Action;
[return int;]
}
调用直接写函数名: funname [ 值]
#!/bin/bash
function getsum() {
SUM=$[$n1+$n2]
echo "SUM=$SUM"
}
read -p "请输入一个值n1" n1
read -p "请输入一个值n2" n2
#调用自定义函数
getsum $n1 $n2
Linux下安装软件(jdk为例子)
- 1、新建一个mkdir /softWareInstall文件夹来存放需要安装的软件的安装包
- 2、通过tar -zxvf 安装包名 解压软件
- 3、新建一个 mkdir /data/program/software文件夹作为安装软件的位置
- 4、在安装软件文件夹中新建一个对应自己软件名的文件夹(mkdir java为例)
- 5、进入安装包目录,通过 mv 文件名 /data/program/software/安装软件的文件名 来移动安装包
- 6、配置相应的环境变量 vim /etc/porfile
- 7、查看防火墙状态:firewall-cmd --state
- 8、关闭防火墙:systemctl stop firewalld.service
- 9、禁止防火墙开机自启动:systemctl disable firewalld.service