Linux操作系统笔记(基本命令+环境安装项目部署+Shell编程)

Linux

关机命令

在Linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

关机指令为:shutdown;

sync # 将数据由内存同步到硬盘中

shutdown # 后不加参数默认一分钟后关机,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机

shutdown -h 10 # 计算机将在10分钟后关机

shutdown -h now # 立即关机

shutdown -h 20:25 # 系统会在今天20:25关机

shutdown -h +10 # 10分钟后关机

shutdown -r now # 立即重启

shutdown -r +10 # 10分钟后重启

reboot # 就是重启,等同于 shutdown -r now

halt # 关闭系统,等同于 shutdown -h now 和 poweroff

最后总结一下,不管系统重启还是关机,首先需要执行 sync 命令,把内存中的数据写到磁盘中。

目录结构

在这里插入图片描述

  • /bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。
  • /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不要动)
  • /dev:dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
  • /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。(不要动)
  • /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(存放突然关机的文件)
  • /media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
  • /opt:这是给主机额外安装软件所摆放的目录。比如你按照一个ORACLE数据库则就可以放在这个目录下。默认是空的。
  • /proc:这个目录是一个虚拟的目录,它是系统的映射,我们可以通过直接访问这个目录来获取系统信息。(不用管)
  • /root:该目录为系统管理员,也称为超级权限者的用户主目录。
  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删除或清除。
  • /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统用管理程序。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
  • /tmp:这个目录是用来存放一些临时文件的。
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
  • /usr/bin:系统用户使用的应用程序。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。
  • /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /www:存放服务器网站相关的资源,环境,网站的项目

常用基本命令

目录管理

cd 地址# 切换目录
./ # 当前目录
cd .. # 返回上一级目录
cd ~ # 回到当前用户目录

ls # 列出目录
	-a # all,查看全部的文件,包括隐藏文件
	-l # 列出所有的文件,包含文件从属性和权限,没有隐藏文件
	-al 或 -la # 列出全部的文件,包含文件从属性和权限,包含隐藏文件

pwd # 显示当前用户所在的目录

mkdir 目录名 # 创建一个目录
mkdir -p test1/test2/test3 # 创建多级目录

touch 文件名 # 创建文件

rmdir 目录名 # 删除一个目录
rmdir -p test1/test2/test3 # 删除多级目录
rmdir只能删除空的目录,如果下面有文件,需要先删除文件

cp 文件 目录 # 将文件拷贝一份放到指定目录中

rm 文件或目录 # 删除一个文件或目录
	-f 文件或目录 # 忽略不存在的文件,不会出现警告,强制删除
	-r 递归删除目录
	-i 互动,删除时询问是否删除
	
mv 文件 目录 # 移动文件到指定目录
mv 文件名1 文件名2 # 如果目标目录中已经存在该文件,则为重命名
	-f 强制
	-u 只替换已经更新过的文件

文件权限属性

在这里插入图片描述
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

  • [ d ] 是目录
  • [ - ] 是文件
  • [ l ] 表示链接文档(link file)
  • [ b ] 表示为装置文件里面的可供存储的接口设备(可随机存取装置)
  • [ c ] 表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为 [rwx] 的三个参数的组合

其中,[r] 代表可读(read)、[w] 代表可写(write)、[x]代表可执行(execute)

要注意的是,这三个权限的位置不会变化,如果没有权限,就会在相应的位置出现[-]
在这里插入图片描述

修改文件属性

1. 更改文件属组
chgrp [-R] 属组名 文件名
	-R # 递归更改文件属组,就是在某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改

2. 更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

3. 更改文件9个属性(必须要掌握)
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字,一种是符号
Linux文件的基本权限就有九个,分别是 owner/group/others 三种身份各有自己的 read/write/execute 权限

文件的权限字符为:[-rwxrwxrwx],这九个权限是三个三个一组的!其中我们可以使用数字来代表各个权限,各个权限的对照表如下:
r:4 w:2 x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx---]分数则是:
	owner = rwx = 4 + 2 + 1 = 7
	group = rwx = 4 + 2 + 1 = 7
	others = --- = 0 + 0 + 0 = 0
	
chmod 770 filename

文件内存查看

Linux系统中使用以下命令来查看文件的内容:

你可以使用 man [命令] 来查看各个命令的使用文档,如:map cp

cat # 由第一行开始显示文件内容
tac # 从最后一行开始显示,可以看出tac是cat的倒着写的
nl # 显示的时候,顺便输出行号
more # 一页一页的显示内容,空格翻页,enter向下看一行 :f 显示行号
less # 于 more 很相似,但是比more更好,他可以往前翻页
head # 只看头几行,通过-n参数控制显示几行
tail # 只看尾巴几行

硬链接和软连接

ln 原文件 链接文件 # 硬链接
ln -s 原文件 链接文件 # 软链接

Vim编辑器

vim 文件名 # 如果该文件存在,则为编辑当前文件,如果不存在,则创建文件

Linux的文本编辑器

  • 正常模式
    在正常模式下,我们可以使用快捷键。
    以 vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用「删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件数据。
  • 编辑模式
    在模式下,程序员可以输入内容。
    按下 i, I, o,O, a,A, r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可
  • 命令行模式
    在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
    在这里插入图片描述
    在这里插入图片描述

账号管理

添加用户
useradd -选项 用户名
	-m 自动创建这个用户的主目录
	-d 指定生成的目录
	-G 给用户分配一个组
	
删除用户
userdel -选项 用户名
	-r 删除用户时将他的目录页一并删除
	
修改用户
usermod 对应修改的内容 修改的那个用户

切换用户
su 用户名
su - 用户名 # 使得shell为可登录的shell

登出,退出当前登录
exitlogout

在这里插入图片描述

修改密码
root用户操作:
passwd 用户名
普通用户修改自己的密码:
passwd

root权限时可操作:
锁定账户
passwd -l 用户名 # 锁定之后这个用户就不能登录了
passwd -d 用户名 # 没有密码也不能登录,-d就是删除这个用户的密码
passwd -u 用户名 # 解锁用户账号

用户组管理

属主、属组

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux系统对用户的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

创建用户组
groupadd 用户组名 # 创建完用户组后可以得到一个组的id,这个id是可以指定的!-g 520,若不指定就是自增1

删除用户组
groupdel 用户组名

修改用户组的权限信息和名字
groupmod -选项 用户组名
	-g 修改组的id
	-n 修改名字

拓展

/etc/passwd

用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell

在这里插入图片描述

磁盘管理

df  # 列出文件系统整体的磁盘使用量
df -h

du  # 检查磁盘空间使用量
du -a
du -sm /*

进程管理

ps # 查看当前系统中正在执行的各种进程的信息!
ps -xx:
	-a 显示当前终端运行的所有进程信息
	-u 以用户的信息显示进程
	-x 显示后台运行进程的参数
	
ps -aux|grep mysql

# | 在linux中这个符号叫做管道符
# grep 查找文件中符合条件的字符串
ps -ef #
ps -ef|grep mysql
	-e:等价于 ‘-A’ ,表示列出全部的进程
	-f:显示全部的列(显示全字段)

pstree -pu # 进程数
	-p 显示父id
	-u 显示用户组
	
kill -9 进程id # 强制杀掉进程

压缩和解压

# zip/unzip指令
# zip用于压缩文件,unzip用于解压的

zip -选项 定义压缩包名 压缩的文件或目录
	-r 递归压缩,即压缩目录
unzip -选项<目录> 压缩包
	-d<目录> 指定解压后的存放目录
# tar指令
# tar指令是打包的指令,最后打包后的文件是.tar.gz的文件

tar -选项 XXX.tar.gz 打包的内容 # 打包目录,压缩后的文件格式.tar.gz
	-c 产生.tar打包文件
	-v 显示详细信息
	-f 指定压缩后的文件名
	-z 打包同时压缩
	-x 解包.tar文件
	
压缩:tar -zcvf XXX.tar.gz 打包的内容(如果是多个,用空格隔开)
解压:tar -zxvf XXX.tar.gz

时间日期类

date # 显示当前时间
date +%Y # 显示当前年份
date +%m 显示当前月份
date +%d 显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" # 显示年月日时分秒

cal # 本月日历

搜索查找类

# find指令
# find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端
find 搜索范围 选项
	-name<查询方式> 按照指定的文件名查找模式查找文件
	-user<用户名> 查找属于指定用户名的所有文件
	-size<文件大小> 按照指定的文件大小查找文件(+200M:大于200M的文件 -200M:小于 200M:等于,
											单位:K,M,G)
# locate指令
# locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻

# 由于locate指令基于数据库查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
locate poxiao
# 查找指令所在目录
which 指令
# grep指令和管道符|
# grep过滤查找,管道符,'”,表示将前一个命令的处理结果输出传递给后面的命令处理。
grep -选项 查找内容 源文件
	-n 显示匹配行及行号
	-i 忽略字母大小写

帮助指令

# man获得帮助信息
man 命令或配置文件

# help指令
help 命令

crond任务调度

crontab进行定时任务的设置

  • 概述
    任务调度:是指定系统在某个特定的时间执行特定的命令或程序
    任务调度分类:
    系统工作:有些重要的工作必须周而复始的执行,如病毒扫描 个别用户工作:个别用户可能希望执行某些程序,比如MySQL数据库备份
ceontab -选项
	-e 编辑crontab定时任务
	-l 查询crontab任务
	-r 删除当前用户的crontab任务

在这里插入图片描述
在这里插入图片描述
案例:每天凌晨2:00将mysql数据库itcast,备份到文件中。提示:指令为:

0 2 * * * mysqldump -uroot -p123456 数据库 >> /home/db.bak

at定时任务

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
  3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
  4. 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
未完!!!!!

环境安装

安装软件一般有三种方式:rpm、解压缩、yum在线安装

JDK安装

rpm方式
在这里插入图片描述

  1. 下载JDK rpm包,去官网下载即可
  2. 安装java环境
java -version# 检查当前系统是否存在java环境
# 如果有需要卸载
# rpm -qa|grep jdk #检测jdk版本信息
# rpm -e --nodeps jdk

# 卸载完成后可安装jdk
# rpm -ivh rpm包名

# 配置环境变量
  1. 运行Tomcat,进入bin目录,和我们以前在Windows下看的都是一样的
# 解压
tar -zxvf 压缩包名

# 执行:startup.sh -->启动tomcat
# 执行:shutdown.sh -->关闭tomcat
./startup.sh
./shutdown.sh

防火墙配置

确保Linux的防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开放的!

# 查看firewall服务状态
systemctl status firewalld

# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

# 查看防火墙规则
firewall-cmd --list-all    # 查看全部信息
firewall-cmd --list-ports  # 只看端口信息

# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service

命令含义:
--zone #作用域
--add-port=80/tcp  #添加端口,格式为:端口/通讯协议
--permanent   #永久生效,没有此参数重启后失效

手动启动MariaDB

1、输入reboot 命令重启服务器
2、重启完成,登录服务器,输入netstat -nlp 命令检查 3306端口,发现 mysqld 服务没有启动
3、了解到mysqld 无法自动启动,尝试手动启动,启动命令 :systemctl start mariadb
4、启动完成后(等候时间 大约 3、4 秒 ),输入netstat -nlp 命令查看端口 3306 是否存在

项目jar包部署到服务器上

创建数据库

liunx 版本ubuntu 16.4
mysql 版本 5.6

1)准备*.sql文件 (* 是准备导入的sql文件的名字)

2)liunx 远程客户端 SecureCRT 7.0

alt+p 打开文件上传窗口 通过复制或者直接拖拽 将准备好的*.sql 文件上传到liunx服务器上

3)登陆liunx 服务器 输入mysql -u用户名 -p密码 (mysql 的用户名 密码)进入mysql数据库

4)show databases 查看当前mysql数据库管理工具中有哪些数据库

5)如果存在已有的 删除操作 drop database 数据库名称

6)创建数据库 create database 数据库名称 charset utf8 (指定字符集编码)

7)查看以上传的*.sql文件 一般都在/root/*.sql文件

8)use 数据库名称 切换到创建好要导入的数据中

9)执行导入 source /root/.sql 是导入在linux 上.sql文件的位置 source 导入命令

启动项目

启动jar包的命令为:
nohup java -jar xxxxxx.jar &

nohup:把输出内容放入到nohup的日志中并生成日志文件

java -jar:启动java的jar包命令

cc-java-export:此处放入你自己的jar包名称

&:关闭linux连接时 服务不会挂断

关闭项目

查看当前应用所占用端口:

netstat -nlp|grep 9090 //9090是系统启动访问的端口, 由此可得到9090 是java运行的端口,
在这里插入图片描述
关闭系统:
kill 9578 //9578是上面查询出来的进程id

Shell编程

Shell脚本的执行方式

脚本格式要求

  1. 脚本以#!/bin/bash开头
  2. 脚本需要有可执行权限

编写一个Shell脚本

  1. 创建一个Shell脚本,输出hello world!

脚本的常用执行方式

  1. 方式1:(输入脚本的绝对路径或相对路径)

    说明:首先要赋予helloworld.sh脚本的执行权限,再执行脚本

  2. 方式2:(sh + 脚本)

    说明:不用赋予脚本执行权限,直接执行即可

Shell的变量

Shell变量介绍

  1. Linux Shell中的变量分为,系统变量和用户自定义变量
  2. 系统变量:$HOM$PWD$SHELL$USER,比如:echo $HOME 等等…
  3. 显示当前shell中所有变量:set

Shell变量的定义

  1. 定义变量:变量=值
  2. 撤销变量:unset 变量
  3. 声明静态变量:readonly变量,注意不能unset

变量定义规则

  1. 变量名称可以由字母、数字和下划线组成,但不能以数字开头
  2. 等号两侧不能有空格
  3. 变量名称一般习惯为大写

将命令的返回值赋给变量

A=`date`,反引号,运行里面的命令,并把结果返回给变量A
A=$(date),等价于反引号

设置环境变量

基本语法

  1. export 变量名=变量值(功能描述:将Shell变量输出为环境变量/全局变量)
  2. source 配置文件(功能描述:让修改后的配置文件立即生效)
  3. echo $变量(功能描述:查询环境变量的值)

shell脚本的多行注释

:<<!
内容...
内容...
内容...
内容...
!

位置参数变量

介绍

  1. 当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
    比如:sh var.sh 100 200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息

基本语法

$n(功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
$*(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$#(功能描述:这个变量代表命令行中所有参数的个数)

预定义变量

基本介绍

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法

$$(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号(PID))
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

运算符

在这里插入图片描述
注意:使用expr方式时才需要转义:\*

条件判断

需要加 if
支持else
在这里插入图片描述
在这里插入图片描述
案例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程控制

case

在这里插入图片描述
在这里插入图片描述

for循环

在这里插入图片描述
在这里插入图片描述

while循环

在这里插入图片描述
在这里插入图片描述

read读取控制台输入

在这里插入图片描述
在这里插入图片描述

系统函数

在这里插入图片描述
在这里插入图片描述

自定义函数

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值