Linux 编码基础

1 安装软件和配置环境

1.1 安装Virtualbox

如果空间足,修改盘符

1.2 安装Vagrant

配置环境变量,变量名:VAGRANT_HOME   变量值建议修改

1.3 安装centos7虚拟机

下载box,修改vagrantfile和bootstrap.sh

1.4 准备box

列出box      vagrant box list

把刚才下载的box添加到vagrant中      vagrant box add centos_v1 ./centos_ v1.box                        删除box                                            vagrant box remove centos-travel

1.5 安装虚拟机

vagrant up   必须在vagrantfile的目录下进行

使用MobaXterm连接刚才安装的3个服务器192.168.56.71,72,73(例)

2 自定义box 

打包当前虚拟机,产生一个自定制的box  例:  vagrant package --base s1 --outputcentos_v2.box   把centos_v2添加到vagrant中     vagrant box add centos_v2 ./centos_v2.box

修改Vagrantfile,设置box使用centos_v2 

注意:打包之前先关闭虚拟机并删除,标准的虚拟机box没有vim

安装vim:yum install vim -y     打开虚拟机:vagrant up (例:s1)  关闭虚拟机:vagrant halt(例:s1)   删除虚拟机:vagrant destroy(例:s1)

3 常用命令 

3.1 基本目录结构

一些命令:

  • bin (binaries)存放二进制可执行文件
  • sbin (super user binaries)存放二进制可执行文件,只有root才能访问
  • etc (etcetera)存放系统配置文件
  • usr (unix shared resources)用于存放共享的系统资源
  • home 存放用户文件的根目录
  • root 超级用户目录
  • dev (devices)用于存放设备文件
  • lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
  • mnt (mount)系统管理员安装临时文件系统的安装点
  • boot 存放用于系统引导时使用的各种文件
  • tmp (temporary)用于存放各种临时文件
  • var (variable)用于存放运行时需要改变数据的文件

3.2 快捷键

  • ctrl+l:清屏 = clear命令
  • tab:自动补全
  • 方向的上下键:历史命令=history
  • ctrl + c:停止进程
  • ctrl + r:搜索历史命令
  • \:命令结束表示换行
  • ctrl+f:下一页
  • ctrl+b:上一页
  • :q退出

3.3 打印命令

echo  

echo hello v3 > v3.txt #覆盖到文件里

echo hello v3 >> v3.txt #追加文件里

3.4 ls命令   查看文件

  • -l (long)详细列表
  • -a (all) 显示隐藏文件、特殊目录.和..
  • ll = ls -l

3.5 man命令   查看命令的帮助

例:man ls

4 文件或目录常用命令

4.1 cd 进入目录

  cd ~         进入用户的宿主目录

  cd ..         进入上级目录

  ./              不写,都是代表当前目录

  cd -         进入上一个历史目录

4.2 pwd 显示当前工作目录(print working directory)

4.3 su 切换用户

使用vagrant安装的虚拟机默认2个用户

  • 用户名:vagrant ,密码vagrant
  • 用户名:root,密码vagrant

 su root 或者su vagrant  密码都是vagrant

4.4 mkdir 创建目录(make directoriy)

后边加个-p    可以在父目录不存在情况下先生成父目录 (parents)

例:mkdir -p /home/vagrant/java-project/src

 4.5 tree 以树列表目录

  需要切换到root用户,然后 yum install -y tree ,再切回vagrant用户

例:tree java-project

4.6 touch创建空文件

  cd +目录,然后创建  例:touch Hello.java

4.7 cp  拷贝文件,目录

  -r:递归拷贝

例:cp java-project/src/Hello.java ./java-project/src/main/java/     tree java-project/

cp -r  java-project/resources/ java-project/src/main/    tree java-project/

 4.8 rm 删除文件或者目录

  • -r:递归删除
  • -f:强制删除

例:rm java-project/src/Hello.java

4.9 mv 移动文件和目录 

例:mv  java-project/resources/ java-project/src/main/

mv可以修改文件名   

例: mv java-project/src/main/java/Hello.java java-project/src/main/java/HelloWorld.java

4.10 cat 显示文本文件内容 (catenate)

cat     OAuth2Config.java(例)

cat a.txt > b.txt #把a.txt内容覆盖到b.txt
cat a.txt >> b.txt #吧a.txt追加到b.txt

4.11 more、less 分页显示文本文件内容

例:     more OAuth2Config.java    显示文本前几页内容
         less OAuth2Config.java      显示文本后几页内容

4.11  head

-n: 显示前几行内容           例:       head  -n  10 OAuth2Config.java

4.12  tail

-n 显示后几行数据     例:tail -n 10 OAuth2Config.java

-f b.log 循环读取(fellow,即时读取)    例:tail -n 20 -f OAuth2Config.java

4.13  wc  统计文本的行数、字数、字符数(word count)

-m 统计文本字节数

-w 统计文本字数

-l 统计文本行数

例:wc -w -l -m a.txt

4.14  find  查找文件

例:

find -name Hello*.java

[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── java -> app
    ├── main
    │   ├── java
    │   │   └── HelloWorld.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 3 files
[vagrant@s1 ~]$ find -name Hello*.java
./java-project/src/main/java/HelloWorld.java
[vagrant@s1 ~]$ find -name jdbc.*
./java-project/src/main/resources/db/jdbc.properties

4.15  grep  查找文本

  • -i:忽略大小写进行匹配。
  • -v:反向查找,只打印不匹配的行。
  • -n:显示匹配行的行号。
  • -r:递归查找子目录中的文件。
  • -l:只打印匹配的文件名。
  • -c:只打印匹配的行数。
  • -a 或 --text : 不要忽略二进制的数据。
  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 --count : 计算符合样式的列数。
  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -o 或 --only-matching : 只显示匹配PATTERN 部分。
  • -q 或 --quiet或--silent : 不显示任何信息。
  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
  • -s 或 --no-messages : 不显示错误信息。
  • -v 或 --invert-match : 显示不包含匹配文本的所有行。
  • -V 或 --version : 显示版本信息。
  • -w 或 --word-regexp : 只显示全字符合的列。
  • -x --line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定"-i"参数相同。

例: grep class OAuth2Config.java -n -i -o   

4.16  ln   格式

ln -s 目标地址 文件名

     例:ln -s /home/vagrant/java-project/src/main/java/HelloWorld.java  app

            echo "hello spring" >> app       通过软连接添加内容

            cat app           通过软连接查看文件内容

5  系统命令

5.1  du 显示指定的文件(目录)已使用的磁盘空间

  • -h 显示单位
  • -s 显示总的大小

例:cd ~
       du -s -h

5.2  free 显示当前内存和交换空间的使用情况

5.3  netstat 显示网络状态信息,查看端口占用情况

  • -a 显示所有连接和监听端口
  • -t (tcp)仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化成数字。
  • -p 显示建立相关链接的程序名

有的时候需要先安装命令      sudo yum install net-tools -y #sudo:得的管理员权限执行命令
    例:      netstat -tunpl

5.4 ifconfig  网卡网络配置详解 

5.5 ping  测试网络的连通性

5.6 top  显示当前系统中耗费资源最多的进程 (实时)

5.7  ps  显示瞬间的进程状态(快照)

  • -e /-A 显示所有进程,环境变量
  • -f 全格式
  • -a 显示所有用户的所有进程(包括其它用户)
  • -u 按用户名和启动时间的顺序来显示进程
  • -x 显示无控制终端的进程

例:ps -aux

5.8  kill  根据进程ID(pid)杀死进程

    例:kill -9 3860

6  压缩和打包命令

6.1  gzip 把文件和目录压缩成gz格式 

gzip OAuth2Config.java              压缩
gzip -d OAuth2Config.java.gz     解压

6.2  bzip2 以bzip2格式压缩和解压

 bzip2 OAuth2Config.java                          压缩
  bzip2 OAuth2Config.java.bz2 -d             解压

6.3  tar(推荐)

  • 打包目录成tar文件
  • 整合gzip和bzip2压缩
  • -c 建立一个压缩文件的参数指令(create)
  • -x 解开一个压缩文件的参数指令(extract)
  • -z 是否需要用 gzip 压缩
  • -j 是否需要用 bzip2 压缩
  • -v 压缩的过程中显示文件(verbose)
  • -f 使用档名,在 f 之后要立即接档名(file)

例:

tar -cvf java-project.tar ./java-project/      #打包java-project目录
rm -rf java-project         #删除java-project
tar -xvf java-project.tar

以gzip方式压缩

tar -czvf java-project.tar.gz ./java-project          #z表示已gz格式压缩
tar -zxvf java-project.tar.gz              #解压

以biz2方式压缩和解压

#压缩
tar -cjvf java-project.tar.bzip2 ./java-project
#解压
tar -xjvf java-project.tar.bzip2

7 vim命令

7.1 vim的模式

7.2  底行命令

  • :wq保存退出
  • :q! 不保存退出
  • :q 退出,如果内容有改变不能退出
  • :set number 显示行号
  • :set nonumber 隐藏行号
  • :w filename 另存为文件
  • :e!撤销所有操作
  • :行号:调到指定的行

7.3  移动命令

  • w b 下一个,上一个单词
  • 0, $ 行首,行尾
  • gg 第一行
  • G 最后一行
  • xG到x行

7.4  替换命令

  • :1,$s/private/public/g 将第一行到追后一行的private替换为public
  • :1,$s/public/protected/c 将第一行到追后一行的public替换为protected(有提示)

7.5  编辑命令

  • x删除一个字符
  • dd 删除一行
  • yy复制一行
  • p粘贴
  • 输入v进入选择模式,选择内容,输入y复制,调到要黏贴的位置输入p粘贴
  • 输入u 撤销操作
  • 在一般模式中输入/8080查找8080,输入n查找下一个
  • 在一般模式输入r+替换的字符,执行替换

8   用户管理的配置文件

  • 保存用户信息的文件:/etc/passwd
  • 保存密码的文件:/etc/shadow
  • 保存用户组的文件:/etc/group
  • 保存用户组密码的文件:/etc/gshadow
  • 用户配置文件:/etc/default/useradd

8.1  /etc/passwd格式

用户名

用户登陆系统的用户名

密码

密码位

UID

用户标示号

GID

默认组标示号

描述信息

存放用户的描述信息

宿主目录

用户登陆系统的默认目录,默认是在/home/下

命令解析器

用户使用的Shell,默认是bash

用户的分类

  • 超级用户:(root,UID=0)
  • 普通用户:(UID在1000以上)
  • 伪用户:(UID在1到999)
    • 系统和服务相关的:bin、daemon、shutdown等
    • 进程相关的:mail、news、games等
    • 伪用户不能登陆系统,而且没有宿主目录

8.2   /etc/shadow格式

密码配置文件

用户名

登陆系统的用户名

密码

加密密码

最后一次修改时间

用户最后一次修改密码距现在的天数,从1970-1-1起

最小时间间隔

两次修改密码之间的最小天数

最大时间间隔

密码有效天数

警告时间

从系统警告到密码失效的天数

账号闲置时间

账号闲置时间

失效时间

密码失效的天数

标志

标志

8.3  用户的组

  • 每个用户至少属于一个用户组
  • 如果创建用户,没有指定组,此用户指定跟用户名同名组
  • 每个用户组可以包含多个用户
  • 同一个用户组的用户享有该组共有的权限

组名

用的所在的组

组密码

密码位,一般不使用

GID

主标示号

组内用户列表

属于改组的用户列表

8.4  用户和组管理命令

8.4.1用户管理命令

  • useradd:添加用户
    • -u 指定组ID(uid)
    • -g 指定所属的组名(gid)
    • -G 指定多个组,用逗号“,”分开(Groups)
    • -c 用户描述(comment)
    • -e 失效时间(expire date)
  • usermod:修改用户
  • -l 修改用户名 (login)usermod -l a b(b改为a)
    • -g 添加组 usermod -g sys tom-G添加多个组 usermod
    • -G sys,root tom–L 锁定用户账号密码(Lock)
    • –U 解锁用户账号(Unlock)
  • userdel:删除用户
  •      -r 删除账号时同时删除目录(remove)

8.4.2  组管理的命令

  • 添加组:groupadd
    • -g 指定gid
  • 修改组:groupmod
    • -n 更改组名(new group)
  • 删除组:groupdel
  • groups 显示用户所属组

例:

添加一个jack用户,设置它属于users组,并添加注释信息

useradd jack

usermod -g users jack

usermod -c "hr jack" jack

#等于上面三个命令

useradd -g users -c "hr jackson" jackson

设置密码

passwd jack

将jack添加到sys和root组中

usermod -G sys,root jack

usermod -G sys,root jackson

把jackson从sys组中删除

gpasswd -d jackson sys

显示jack的组

groups jack

groups jackson

groups root

groups vagrant

添加一个hr组

groupadd hr

修改hr组为sale组

groupmod -n sale hr

jack添加到sale组

usermod -G sale jack

groups jack

9 权限管理

9.1 权限表示符号

例:

  • 第1位:文件类型(d 目录,- 普通文件,l 链接文件)
  • 第2-4位:所属用户权限,用u(user)
  • 表示第5-7位:所属组权限,用g(group)表示
  • 第8-10位:其他用户权限,用o(other)表示第
  • 2-10位:表示所有的权限,用a(all)表示

三种基本权限

  • r 读权限(read)4
  • w 写权限(write)2
  • x 执行权限 (execute)1

9.2 chmod命令 chmod修改文件权限命令(change mode) 

  • 参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)
  • 两种方式
    • 例如:chmod u+x a.txt,给a.txt增加当前用户的执行权限
    • 用数字来表示权限(r=4,w=2,x=1,-=0) 例如:chmod 750 b.txt :表示b.txt的权限当前用户是rwx,当前用户的组rx,其他用户没有权限

两种方式修改权限:

#方式1
chomod u+rwx,g-w,o-rwx ~/OAuth2Config.java
#方式2
chmod 750 OAuth2Config.java

9.3 chown  改变文件所属用户,文件所属的组

  • -R:递归

例:chown root:users OAuth2Config.java  把OAuth2Config.java的用户和组修改为root和users

10  在虚拟机安装JDK

10.1 把文件拖到虚拟机里,root根目录下

10.2  创建安装目录

一般程序安装的目录/user/local

mkdir /usr/local/java      创建一个java目录

10.3 移动安装文件到目录

mv ~/jdk-8u11-linux-x64.tar.gz /usr/local/java/

10.4  解压文

tar -zxvf jdk-8u11-linux-x64.tar.gz

10.5 配置Java环境变量

  • JAVA_HOME:java程序访问的jdk根目录,比如tomcat就要访问这个目录
  • path:命令的寻址目录

whereis java #查找java在哪
vim /etc/profile
#输入G到文件末尾,增加2个环境变量
JAVA_HOME=/usr/local/java/jdk1.8.0_11
export PATH=$JAVA_HOME/bin:$PATH

#从新加载文件
source /etc/profile

java -version
...JDK1.8

10.6  HelloWorld实验

cd ~
vim Hello.java

在文件里输入:

public class Hello {

  public static void main(String[] args) {
     System.out.println("hello java");

  }

}

编译:javac Hello.java

运行:java Hello

11 安装tomcat

11.1 把文件拖到虚拟机,根目录root里

11.2  创建目录解压

mv ~/apache-tomcat-8.5.56.tar.gz /usr/local/java
tar -zxvf apache-tomcat-8.5.56.tar.gz

11.3  运行

/usr/local/java/apache-tomcat-8.5.56/bin/startup.sh #启动
#cd /usr/local/java/apache-tomcat-8.5.56/bin
#./startup.sh
jps #java的一个工具,跟javac一样,查看java的进程
netstat -tunpl

11.4 测试

在宿主机浏览器访问http://192.168.56.71:8080/index.jsp

测试修改/usr/local/java/apache-tomcat-8.5.56/webapp/ROOT/index.jsp

vim /usr/local/java/apache-tomcat-8.5.56/webapp/ROOT/index.jsp
使用curl命令:

curl http://localhost:8080/index.jsp

12  安装Mysql

12.1  下载Mysql

下载地址 MySQL :: Download MySQL Community Server (Archived Versions),如图9-12所示。

图9-12 mysql下载

12.2  安装

 拷贝mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz到/root目录下

cd ~
tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

解压完成后重命名

mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql-5.7.28
mv mysql-5.7.28 /usr/local/

检查mysql组和用户是否存在,如果没有则创建

cat /etc/group|grep mysql
groupadd mysql
useradd -r -g mysql mysql  #useradd -r参数表示mysql用户是系统用户,不可用于登录系统

安装数据库

创建data目录
cd /usr/local/mysql-5.7.28
mkdir data

将/usr/local/mysql-5.7.28的所有者及所属组改为mysql

chown -R mysql.mysql /usr/local/mysql-5.7.28

在/usr/local/mysql-5.7.28/support-files目录下创建my_default.cnf

cd /usr/local/mysql-5.7.28/support-files
vim my_default.cnf

具体配置内容如下:

[mysqld]

#设置mysql的安装目录
basedir =/usr/local/mysql-5.7.28
#设置mysql数据库的数据存放目录
datadir = /usr/local/mysql-5.7.28/data
#设置端口
port = 3306

socket = /tmp/mysql.sock
#设置字符集
character-set-server=utf8
#日志存放目录
log-error = /usr/local/mysql-5.7.28/data/mysqld.log
pid-file = /usr/local/mysql-5.7.28/data/mysqld.pid
#允许时间类型的数据为零(去掉NO_ZERO_IN_DATE,NO_ZERO_DATE)
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

拷贝配置文件,是否覆盖,是

cp my_default.cnf /etc/my.cnf

初始化Mysql

cd /usr/local/mysql-5.7.28/
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.28/ --datadir=/usr/local/mysql-5.7.28/data/

如果报错:./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or 就安装libaio,如果没有则跳过

yum install libaio
 

初始化完成之后查看日志

cat /usr/local/mysql-5.7.28/data/mysqld.log
 

蓝框里的是临时密码,如图9-13所示。


图9-13 mysql默认密码
 

把启动脚本放到开机初始化目录
 

cp support-files/mysql.server /etc/init.d/mysql


启动mysql
 

service mysql start


进入mysql并更改密码
 

cd /usr/local/mysql-5.7.28

./bin/mysql -u root -p 上面生成的初始化密码

mysql> set password=password('123456');

mysql> grant all privileges on *.* to root@'%' identified by '123456';

mysql> flush privileges;


添加远程访问权限
 

mysql> use mysql;

mysql> update user set host='%' where user = 'root';

mysql> flush privileges;


如果更改时报错:ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY',就先查询一下是否已更改,最后执行刷新。

重启mysql生效

service mysql restart

12.3  常用命令

●启动service mysql start
●关闭service mysql stop
●重启service mysql restart

​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值