文件和文件夹的777权限是啥意思?

9位标识法

文件和文件夹的权限

文件和文件夹的权限由9位字母标识:
1-3位:依次代表当前用户的“读”“写”“执行”权限。
4-6位:依次代表当前用户组其它用户的“读”“写”“执行”权限。
7-9位:依次代表其它用户组(非当前用户组)用户的“读”“写”“执行”权限。

-rwx含义

- 无权限,r 读read,w 写write,x execute

权限举例

如果某个文件的权限是:rwxr--r--
其的含义就是:当前用户可以对此文件执行读、写、执行;本组其它用户只能读;其它组用户也只能读。

3位标识法

先来看下面的二进制图表

二进制 十进制
001 1
010 2
011 3
100 4
101 5
110 6
111 7

用上面的图标对应权限

由于9位标识法每位的值只有两种可能:-或r,-或w,-或x,因此每位都可以视作二进制的0和1。
那么9位标识法就可以根据上面的二进制和十进制对应表进行简化,比如之前的:rwxr--r--就可以对应为二进制的111 100 100,进而简化成十进制的711

777的含义明白了吗?

根据上面的对应表,777对应的三个二进制值就是111 111 111,也就是rwxrwxrwx:当前用户、同组用户、其他组用户都可以进行“读”“写”“运行”操作。

MySQL数据库的负载均衡:主从复制和读写分离

数据库进化之路

之前,我们了解了如何通过Nginx实现负载均衡。这时候就会陆续出现几个问题:

  1. Nginx将流量分配到了不同的Tomcat服务器上,为了保持数据的一致性,不同的Tomcat服务器应该操作同一个数据库。这样无论是访客被分配到了哪个Tomcat服务器上,其最终操作的都是一个数据库。最简单的做法就是配备一台专门的数据库服务器。如下图所示:
    file
  2. 然而这样做的话,相当于一台数据库服务器需要承载多台Tomcat服务器的数据库CRUD压力。Tomcat服务器的负载虽然被Nginx稀释了,数据库服务器的压力却依然很大。为了解决这个问题,我们希望也能够像Tomcat服务器一样有多台数据库服务器,这些数据库服务器要满足两个特点:
    A. CRUD操作被分流到多台数据库服务器上。
    B. 多台数据库服务器的数据需要实时同步。
    file
  3. 为了实现第2条的功能,我们需要实现数据库的“主从复制”和“读写分离”功能。
    A. 主从复制。一台主数据库服务器(Master),若干台从数据库服务器(Slave)。从数据库服务器实时同步主数据库服务器的数据。在MySQL中,实现主从复制不需要借助第三方软件,MySQL自带了相关的功能。其原理就是将主MySQL数据库的操作SQL语句以日志的方式保存下来,并复制到从MySQL数据库中,然后由从MySQL数据库执行日志中的SQL语句。
    B. 读写分离。数据库查询操作发送给从数据库服务器;数据库增删改操作发送给数据库主服务器。读写分离操作需要借助第三方软件,本文使用mycat实现。
    file

A1. 主从复制:环境搭建

1. 搭建3台数据库服务器。
我是在WorkStation下建立了3台虚拟机,每台虚拟机对应的IP地址如下:
file
2. 在服务器中安装MySQL数据库。
安装方法参考:http://www.leonwish.com/archives/173

3. MySQL客户端测试
三台服务器的MySQL安装好后,可以通过MySQL客户端测试一下,确保三台机器的MySQL都可以远程访问。
file

A2. 主从复制:主机Master操作步骤

1. 修改/etc/my.cnf
在文件中添加如下内容:

#以服务器IP地址作为server-id,随意取,确保不冲突即可
server-id=135
log_bin
#需要同步的数据库
binlog-do-db=royotech
#无需同步的数据库
binlog-ignore-db=mysql

2. 重启mysql服务

systemctl restart mysql

3. 查看并记录主数据库状态

mysql -uroot -p111111

然后

show master status

得到如下结果:
file
这里面最重要的信息是File和Position,120代表当前主数据库的位置。

A3. 主从复制:从机Slave1操作步骤

1. 删除auto.cnf文件

rm /usr/local/mysql/data/auto.cnf

注意:

  1. auto.cnf文件里面保存着mysql的uuid信息,由于我的测试环境是通过VMWare克隆出来的,因此三台MySQL服务器的uuid信息都相同,uuid冲突的情况下后面的操作会报错。
  2. 删除这个文件后重启mysql,会自动生成新的auto.cnf文件,这时里面的uuid就是全新的了。
  3. 不同安装方法auto.cnf的文件位置也不同。
    如果需要查找auto.cnf的位置,可以在mysql里面运行如下语句:

    user mysql;
    show variables like 'datadir';

2. 修改/etc/my.cnf
file
这里只需要添加一句:

server-id=136

3. 重启mysql服务

systemctl restart mysql

4. 登陆mysql,设置主MySQL连接信息

mysql -uroot -p111111

然后

stop slave

然后

change master to master_host='192.168.81.135',master_user='root',master_password='111111',master_log_file='localhost-bin.000001',master_log_pos=120;

然后

start slave

5. 查看从节点状态

show slave status\G

\G可以格式化输出,否则排版很乱,没法查看。
file
上面两个地方都是Yes的时候,说明操作成功了!

A4. 主从复制:从机Slave2操作步骤

和Slave1一样的操作

1. 删除auto.cnf文件

rm /usr/local/mysql/data/auto.cnf

2. 修改/etc/my.cnf
添加一句:

server-id=137

3. 重启mysql服务

systemctl restart mysql

4. 登陆mysql,设置主MySQL连接信息

mysql -uroot -p111111

然后

stop slave

然后

change master to master_host='192.168.81.135',master_user='root',master_password='111111',master_log_file='localhost-bin.000001',master_log_pos=120;

然后

start slave

5. 查看从节点状态

show slave status\G

file

A5. 主从复制:主从复制配置完成!测试一下

1. 在主MySQL中新建royotech数据库,新建user表
file

2. 在从MySQL中刷新一下
file
欧耶!同步过来了!

B1. 读写分离:环境搭建

1. 搭建Mycat服务器
在WorkStation中增加一台服务器用于安装Mycat,IP地址如下:
file

2. 在服务器中安装Mycat
第一步:下载Mycat安装包。
可以通过Mycat官网下载:http://www.mycat.io/
也可以通过本站下载:Mycat-server-1.6-RELEASE-20161028204710-linux.tar

第二步:上传、解压。

tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

然后将mycat复制到/usr/local/下

mycat /usr/local

第三步:放行8066(Mycat默认使用该端口号)端口。

firewall-cmd --zone=public --add-port=8066/tcp --permanent

然后

firewall-cmd --reload

B2. 读写分离:配置Mycat

1. 配置环境变量

vim /etc/profile

增加如下内容:

export MYCAT_HOME=/usr/local/mycat
export PATH=$MYCAT_HOME/bin:$PATH

file
然后:

source /etc/profile

2. 修改Mycat的server.xml和schema.xml配置文件
修改:/usr/local/mycat/conf/server.xml

    <user name="root">
        <property name="password">123456</property>
        <property name="schemas">TESTDB</property>
    </user>

这三个信息,是程序数据库接口连接Mycat时使用的“数据库名称”“用户名”“密码”,如果只是为了测试用,这三个信息可以不变。
修改:/usr/local/mycat/conf/schema.xml为以下内容

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>

    <dataNode name="dn1" dataHost="localhost1" database="royotech" />

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM1" url="192.168.81.135:3306" user="root" password="111111">
            <readHost host="hostS1" url="192.168.81.136:3306" user="root" password="111111" />
            <readHost host="hostS2" url="192.168.81.137:3306" user="root" password="111111" />
        </writeHost>
    </dataHost>
</mycat:schema>

balance=0:不开启读写分离,所有读操作发生在writeHost上
balance=1:所有读操作随机发送到readHost和备用的writeHost上
balance=2:所有读操作随机发送到writeHost和readHost上
balance=3:所有读操作只发送到readHost上。

file

3. 启动Mycat

mycat console

启动成功后,界面就不能关了。
启动Mycat时可能会遇到如下错误:

wrapper  | JVM exited while loading the application.
jvm 1    | Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
jvm 1    | Unrecognized VM option 'AggressiveOpts'
jvm 1    | Error: Could not create the Java Virtual Machine.
jvm 1    | Error: A fatal exception has occurred. Program will exit.

修改/usr/local/mycat/conf/wrapper.conf,注释掉wrapper.java.additional.3=-XX:+AggressiveOpts即可:
file

B3. 读写分离:测试

1. 连接Mycat测试
file
如果能连接成功,则证明Mycat安装成功。

2. 测试读写分离
现在Slave1和Slave2中分别添加一条数据:
file
然后在Mycat中进行select测试,如果结果出现Slave1和Slave2中增加的内容,证明读写分离成功。
file

负载均衡原理及Nginx在CentOS8下的安装使用

1. (正向)代理和反向代理

  • (正向)代理:我们想要访问Google的时候,需要在本机安装VPN,这个VPN就是正向代理。或者可以简单理解为:安装在自己电脑上的代理就是正向代理。
  • 反向代理:我们访问Google的时候,中间还有一个服务器,这个服务器负责随机将访客分配到Google不同的服务器上。中间的这个负责分配的服务器,就是反向代理。或者可以理解为:没有安装在自己电脑上的代理就是反向代理。

2. 负载均衡

file
Nginx就是负载均衡器。

3. Nginx特性

Nginx只对静态资源有效。动态资源计算仍在原服务器完成。

4. 搭建测试环境

准备三台服务器环境,这里我是在VMWare Workstation下建立了三台服务器,每台服务器需要安装的环境和IP地址如下:
file
有关JDK和Tomcat的安装,请参考:http://www.leonwish.com/archives/173

5. Nginx安装

当前安装基于192.168.81.134服务器,操作系统为CentOS,根据Nginx官方文档提示,采用yum安装方式。
Nginx原版安装指南如下:http://nginx.org/en/linux_packages.html#RHEL-CentOS

第一步:安装yum-utils

sudo yum install yum-utils

第二步:在如下位置创建如下文件:

/etc/yum.repos.d/nginx.repo

文件内容如下:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

第三步:安装Nginx

sudo yum install nginx
注:如果你使用的是CentOS8,直接使用第三步命令即可安装。

第四步:启动Nginx

systemctl start nginx

第五步:放行80端口(Nginx默认使用80端口)

firewall-cmd --zone=public --add-port=80/tcp --permanent
然后重启防火墙
firewall-cmd --reload

第六步:在浏览器中输入http://192.168.81.134 测试一下

看到下面内容就是成功了:
file

6. Nginx配置

第一步:配置服务器集群IP地址

编辑/etc/nginx/nginx.conf文件
在如下位置添加代码:
file
注意:balance这个名字随意,但是要上下呼应。每次修改配置文件后,都需要重启Nginx才能生效。

第二步:关闭安全组

编辑/etc/selinux/config文件
file

第三步:重启服务器

不重启不生效哦

7. 最终测试

第一步:将两台JDK服务器的初始页面修改为不同的内容。

比如:
132的服务器修改为Hello,132
133的服务器修改为Hello,133

第二步:在浏览器中输入:http://192.168.81.134

多刷新几次,如果能够分别出现Hello,132和Hello,133就说明成功了!

Python安装时勾选添加PATH环境变量,安装完却无法在cmd使用python命令的解决方法

问题描述

在安装Python的时候,会有个添加环境变量的选项,我们在安装Python的时候一般都会勾选,这样就可以省去手动添加环境变量的麻烦。

然而,安装了多次Python的我却在一次在Windows2008服务器上安装Python的时候遇到了麻烦。同样的安装流程,安装后就是无法在cmd中使用python命令。

查看了下环境变量,python的两个路径也加到PATH环境变量中去了。那为啥还是不能使用呢?

原因

还好我比较幸运,一下子发现了问题。
原来,在安装Python之前,服务器中已经有了Path环境变量,且里面已经有了相关的内容。然后,Python不知怎么搞的又建了一个环境变量名为全大写的PATH。
然而我们都知道,Windows中是不区分大小写的,也就是说服务器中已经存在的Path和新建的PATH产生了冲突。

解决

找到了原因,解决方法就很简单了。将新建的PATH变量中的内容加到之前已经存在的Path变量的末尾就好了。

在CentOS8中配置JDK13、Tomcat9、MySQL5.6环境

准备和前提

1. 通过fileZilla和服务器建立连接。

连接方法参考:http://www.leonwish.com/archives/170

2. 安装JDK

2.1 安装思路。

JDK在Linux下的安装思路和在Windows下的安装思路类似:
A. 安装软件。其实就是上传文件和解压文件。
B. 配置两个环境变量:JAVA_HOME、BIN目录。

2.2 上传、解压、移动。

a. 压缩包jdk-13.0.1_linux-x64_bin.tar.gz上传到/usr/local/tmp目录
b. 解压压缩包

tar zxvf jdk-13.0.1_linux-x64_bin.tar.gz

c. 解压后的目录移动到/usr/local/jdk13

mv jdk-13.0.1 /usr/local/jdk13

2.3 配置环境变量。

vim /etc/profile

在文件中找到export部分,注释export行并增加以下内容:

#export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/local/jdk13
export PATH=$JAVA_HOME/bin:$PATH

export的作用是增加新的或修改已经存在的环境变量。
如果是修改已经存在的环境变量,需要注意在环境变量末尾加:$变量名。记住是冒号:(在Windows中是分号;)。

2.4 解析profile文件或重启服务器。

解析命令如下:

source /etc/profile

如果不解析,则配置不生效。

2.5 JDK安装完毕,测试一下。

file

3. 安装Tomcat

3.1 上传、解压、移动

a. 压缩包apache-tomcat-9.0.30.tar.gz上传到/usr/local/tmp目录
b. 解压压缩包

tar zxvf apache-tomcat-9.0.30.tar.gz

c. 解压后的目录移动到/usr/local/apache-tomcat-9

mv apache-tomcat-9.0.30 /usr/local/apache-tomcat-9

3.2 配置环境变量

vim /etc/profile

在文件中找到export部分,在上面的基础上修改为下面内容:

#export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/local/jdk13
export PATH=$JAVA_HOME/bin:$PATH

export TOMCAT_HOME=/usr/local/apache-tomcat-9
export CATALINA_HOME=/usr/local/apache-tomcat-9

4.3 解析profile文件或重启服务器。

解析命令如下:

source /etc/profile

如果不解析,则配置不生效。

4.4 Tomcat安装完毕,启动Tomcat。

file
注意:绿色的以.sh结尾的文件,是Linux中的可执行文件。运行.sh文件的命令为
./XXX.sh

4.5 配置防火墙,访问Tomcat。

方法A:直接停掉防火墙

systemctl stop firewalld

方法B:在firewalld里面放行8080端口

运行以下命令:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

这条命令运行完成后,会将8080端口放行的内容添加到 /etc/firewalld/zones/public.xml中:
file
注意:在CentOS7之前的版本中,放行端口号是通过配置iptables完成的。
然后重启防火墙:

firewall-cmd --reload

4.6 大功告成,测试一下

file

4. 安装MySQL

4.1 上传、解压、移动

a. 压缩包mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz上传到/usr/local/tmp目录
b. 解压压缩包

tar zxvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz

c. 解压后的目录移动到/usr/local/mysql

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

4.2 创建mysql专用用户组和用户,给mysql文件夹赋权

a. 创建用户组(groupadd 用户组名)

groupadd mysql

b. 创建用户(useradd -r用户名称 -g用户组名称)

useradd -r -g mysql mysql

c. 保证命令行当前在/usr/local/mysql中,为mysql目录赋权(注意最后的.前面有个空格)

[root@localhost mysql]# chgrp -R mysql .
[root@localhost mysql]# chown -R mysql .

4.3 注册MySQL服务

a. 确保/etc/my.cnf不存在,如果存在删除。
b. 保证命令行当前在/usr/local/mysql中,执行如下命令初始化数据库。

./scripts/mysql_install_db --user=mysql

运行完成后,会在/usr/local/mysql/support-files下自动生成一个my-default.cnf文件。
c. 复制上面的my-default.cnf文件到/etc/my.cnf

cp my-default.cnf /etc/my.cnf

d. 复制MySQL启动文件到自启动文件夹/etc/rc.d/init.d/下

cp mysql.server /etc/rc.d/init.d/mysql

注:mysql为service名称,其实可以按照个人爱好随便写。

4.4 启动MySQL

service mysql start

此时,如果在命令行里面输入mysql命令,还是无法使用的,原因是mysql命令文件目前位于/usr/local/mysql/bin文件夹下,想要直接在命令行里面使用mysql命令,mysql命令必须出现在/usr/bin/文件夹下。
这时只需要按照如下方法添加软连接即可:

ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

4.5 使用mysql命令报错解决

使用mysql命令时,可能会报如下错误:

mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

使用如下命令通过yum安装libncurses即可:

yum install libncurses*

4.6 修改MySQL的root用户密码

第一步:进入mysql数据库

use mysql

第二步:更新root用户的密码为111111

update user set  password = password("111111") where User = "root"

第三步:刷新权限使设定生效

flush privileges;

4.7 大功告成,本地测试一下:

file

4.8 配置以可以进行远程连接

截止到4.7,还是只能本机访问的,如果需要远程访问,还需要做如下配置。
第一步:赋予root用户远程连接权限。

grant all privileges on *.* to root@'%' identified by '111111' with grant option;
flush privileges;

第二步:开启3306端口。

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

这时候,通过MySQL客户端就可以访问MySQL数据库啦。

XShell连接Linux(CentOS8)服务器方法

前言

过程

1. 本机安装XShell

自行下载XShell安装包,安装到本地。

2. 打开XShell,新建会话

file

  • 名称:随意,主要起标识作用
  • 协议:使用默认的SSH
  • 主机:查看要连接的服务器IP地址
  • 端口号:使用默认的22(默认情况下,Linux只开放22端口)

3. 连接

file

4. VMWare NAT模式下无法连接的问题

将下面位置的√选上就好了。
file

CentOS目录结构及常用Linux命令汇总

第一部分:说明

  • 个人总结,随着时间推移不断补充。
  • 如果不是专业的服务器维护工程师,掌握以下这些命令行就可以满足你与服务器进行各种数据交换的需要了(部署项目代码等)。
  • 以下命令在CentOS 8下亲测有效。

第二部分:目录结构

etc

存放系统配置的目录。配置环境变量、服务等。

home

除了root以外,其它用户都在home下有以用户名作为文件夹名称的目录。用户只对自己的文件夹有访问权限。

root

root用户的单独文件夹。用的比较少。

usr和opt

  • usr类似Windows中的C://Program Files
  • opt类似D盘自己指定的安装目录

如果使用usr作为程序目录,则可以在usr/local下新建tmp文件夹,所有安装文件压缩包都上传到tmp目录下。

bin和sbin

bin存放所有用户都能使用的命令文件比如:ls,cat、cd等。
sbin存放只有root管理员可以使用的命令文件比如:fdisk、shutdown、mount

dev

设备文件夹。比如挂载光驱,Windows操作系统下的硬盘等。

srv

服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。

第三部分:文件夹权限

Linux中的文件属性说明有10位:

  • 第1位:代表当前文件类型。
    • - 文件
    • d 文件夹
    • l 软连接
  • 第2-4位:分别对应当前用户的“读、写、执行”权限。
    • r 可读
    • w 可写
    • x 可执行
    • - 无该权限
  • 第5-7位:当前组的其它用户的“读、写、执行”权限。
  • 第8-10位:非当前组用户的“读、写、执行”权限。

第四部分:命令汇总

1. 理解:~和/,#和$

file
命令行进入后默认显示:
[leon@localhost ~]$
命令格式如下:
[当前用户@当前主机 当前目录]用户权限
当前目录,有三种情况:

  • ~:当前用户的home目录
  • /:root用户的根目录
  • XXX:当前进入的某个目录名称
    用户权限,有两种情况:
  • $:普通用户登陆
  • #:root用户登陆

2. 常用命令。

2.1 pwd

打印工作目录,显示当前文件夹全路径。当前工作目录比较深的时候,想知道当前所在位置时用这个命令。

2.2 cd

进入某个目录。
cd XXX:进入XXX目录
cd ..:回到上级目录
cd /:回到根目录
这里需要注意,和windows不同的是,Linux下cd后面如果跟".."的话,也需要在".."前加空格。

2.3 mkdir

创建新文件夹。
mkdir tmp:在当前目录下创建一个空的tmp目录。

2.4 ls,dir,ll

file
ls:列出目录(Linux命令,有着色)
dir:列出目录(Windows命令,无着色)
ll:列出目录详情
-a 属性,列出隐藏文件。Linux中,以.开头的文件是隐藏文件。

2.5 vi,vim

vi XXX:编辑文件XXX(无着色)
vim XXX:编辑文件XXX(vi高级版,有着色)
如果文件不存在就创建这个XXX文件。

2.6 vi和vim指令

i键:进入编辑模式
Esc键:退出编辑模式
:wq 保存编辑并退出
:q 文件没有编辑的情况下退出
:q! 强制退出,如果编辑了则不会保存编辑的内容。

2.7 cat、more、less、most、head、tail、tailf

cat:查看某文件的全部内容
more和less和most:分屏查看某文件的内容
file
head [-n]:查看文件前n行,默认查看文件前10行。
tail [-n]:查看文件末n行,默认查看文件末10行。
tailf [-n]:当该文件被编辑时,动态查看文件末n行,默认查看文件末10行。比如查看动态日志。

2.8 touch

touch demo.java 新建空文件demo.java

2.9 echo

echo "hello" >> demo.xml
将字符串hello添加到demo.xml末尾
echo "helloworld" > demo.xml
将字符串helloworld覆盖demo.xml文件内容

2.10 ifconfig

类似于Windows中的ipconfig,查看网卡信息。

2.11 reboot

重启机器

2.12 加压缩:tar zxvf 文件名

比如:tar zxvf apachetomcat.tar.gz
z:文件是否具有gzip(.tar.gz,.tgz)属性
x:释放文件,拆包
v:解压缩过程中显示文件
f:指定被处理的文件名

2.13 压缩:tar zcvf 打包后文件名.tar.gz /要打包的文件(夹)路径

比如:
tar zcvf backup.tar.gz /bin

tar cvf backup.tar /bin
z:以gzip(.tar.gz)方式压缩
c:打包
v:压缩过程中显示文件
f:指定被处理的文件名
说明:当时用winrar解压tar.gz文件时,我们会发现,文件往往需要解压两次,第一次解压为tar文件,解压tar文件后才会是打包的文件。其实,使用tar命令时,如果不加z,那么tar的作用仅仅是打包,如果加了z,则是在打包基础上再使用gzip压缩一遍。所以tar.gz的文件实际上是经过“打包”和“压缩”两道工序的产物,这和我们平时使用windows下rar打包压缩一次完成的理念稍微有点不同

2.14 复制命令:cp和cp -r

cp 源文件路径 新文件路径
cp -r 源文件夹路径 新文件夹路径

2.15 剪切(重命名):mv

mv 源文件路径 新文件路径
mv 源文件名 新文件名

2.16 删除:rm

rm 文件名,删除文件
rm -f 文件名,强制删除文件
rm -r 文件夹名,删除文件夹
rm -rf 文件夹名,强制删除文件夹

2.17 clear

清空当前屏幕内容
快捷键Ctrl+l

2.18 ip add和dhclient

ip add查看本地ip地址
dhcclient 获取ip地址
dhclient -r释放ip地址

3.19 systemctl

systemctl start 服务名,开启某个服务
systemctl stop 服务名,停止某个服务
systemctl status 服务名,某个服务当前状态
systemctl restart 服务名,重启某个服务
systemctl enable 服务名,将某个服务添加为自启动
比如,查看当前防火墙服务的状态:
systemctl status firewalld

3.20 grep和find

grep 关键字 文件名:在文件中查找关键字
find 路径 -name 文件名:在指定路径查找指定文件

3.21 ps,top和kill

ps -ef:查看所有进程的最后状态信息(静态)
ps -ef|grep XXX:查看与XXX相关的进程
top:查看所有进程的动态信息
kill -9 进程PID:结束进程

3.22 groupadd,useradd,passwd

groupadd 组名
useradd -g 组名 用户名
passwd 用户名

3.23 su

su 用户名:切换到某用户,如果切换到root,直接su

3.24 chmod

  • 更改文件权限9位标识法
    chmod u=rwx,g=rwx,o=rwx abc.sh
    使abc.sh文件所有组的所有用户可:读写运行
  • 更改文件权限3位标识法
    chomod 666 abc.sh
    有关9位标识法和3位标识法请参考:http://www.leonwish.com/archives/217

3.25 firewall-cmd

  • 查看当前开放的端口信息
    firewall-cmd --list-all
  • 永久开放某端口号(比如8066)
    firewall-cmd --zone=public --add-port=8066/tcp --permanent
    firewall-cmd --reload

3.26 apt-get,aptitude,yum,dnf

都是包安装程序命令:
dnf > yum > aptitude > apt-get

3.27 curl

返回网址对应的html信息:

curl http://www.baidu.com

3.28 make

Linux下,源码的安装一般由3个步骤组成:
配置(configure)、编译(make)、安装(make install)

  • ./configure:运行目录下的configure文件,作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。
  • make:进入文件目录下,如果有makefile文件,就运行make命令,这个过程是进行文件的编译。
  • make install:编译完成后,make install命令用来安装。

重要的./configure --prefix=路径:

  • ./configure --prefix=路径:作用是编译的时候用来指定程序存放路径。
  • 如果在make前不指定prefix,则可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share。
  • 卸载这个程序的时候,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。
  • 指定prefix,直接删掉一个文件夹就够了。

使用make前需先安装gcc和g++

yum install gcc automake autoconf libtool make
yum install gcc-c++

VMWare Workstation下安装CentOS 8详细说明

第一步:安装VMWare Workstation

安装完打开软件,显示如下界面:
file

第二步:下载CentOS ISO

从CentOS官网上下载ISO文件到本地。
我下载后的文件名是:CentOS-8-x86_64-1905-dvd1.iso

第三步:在VMWare WorkStation中创建虚拟机。

分步操作截图及解释如下:

1. 创建新的虚拟机

file

2. 使用:自定义(高级)

file

3. 无需修改,直接下一步

file

4. 选择ISO,然后下一步

file

5. 设定Linux账户信息

file
全名:主机名称(可以理解为上图Windows系统中的计算机全名)。
用户名:可以使用小写字母、数字和破折号,但不要在用户名中以破折号作为起始字符。请勿使用 root 作为名称。
密码:用户名和root用户的密码。
file

6. 设定虚拟机名称

file
虚拟机名称:这个是为虚拟机取得名字,方便日后在VMWare WorkStation中区分。这个名字最终会显示在WorkStation左侧的列表中。
位置:默认是C盘,我选择放在F盘。

7. 普通应用一个处理器就够了

file

8. 普通应用一个G的内存就够了

file

9. 使用网络地址转换(NAT)

file
三种连接方式的解释如下:
- 桥接网络(bridged)
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。
假设你的PC机在当前局域网里面的IP地址是192.168.0.104,那么安装后的虚拟机IP地址就是192.168.0.XXX
- 网络地址转换(NAT)
使用NAT模式可以实现在虚拟系统里访问互联网,但虚拟系统只能和主机通信,而无法和主机本局域网中的其他真实主机进行通讯。相当于虚拟主机和当前主机组件了新的虚拟局域网。
比如,当前主机在局域网中的IP地址是192.168.0.104,那么使用NAT后,当前主机和虚拟主机将会以新的IP段,比如192.168.10.XXX的虚拟地址进行通信。
- 仅主机模式网络(host-only)
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
提示:在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。

10. 下一步

file

11. 下一步

file

12. 下一步

file

13. 设定硬盘空间大小,其实10G足够了。

file

14. 选择和第六步相同的位置方便管理

file

15. 点击完成。开始安装过程。

file

报错1:

file
vmci是一个宿主机和虚拟机之间的交换层,可以帮助虚拟机更快地调用硬件资源,但是win10对其支持不完善,个别机器会报错,解决方法如下:
file
查找到 vmci0.present="TRUE",将TURE更改为FALSE,保存即可。

报错2:

file
主要原因是虚拟机自动加载两个CD。解决方法如下:
在设置里把CD/DVD(IDE)autoinst.iso取消启动时连接,只启用CD/DVD2(IDE)就好了。
file

第四步:在虚拟机中安装CentOS8

1. 选择安装过程中使用的语言。

file

2. 点击有黄叹号的地方。

file

3. 啥也不用干,点击完成。

file

4. 开始安装

file

5. 安装过程中点击【根密码】设置root密码

这时你可能会晕了,为什么又要设root密码?而且还提示没有创建用户呢?刚刚在上面不是为root设密码而且创建了个leon用户吗?
注意:上面那步是快捷安装时才适用的,而CentOS8由于版本比较新,不适用与快捷安装,所以之前的设定相当于没用。如果装CentOS6.5,上面的设置就会生效了。
file

6. 然后就是漫长的等待,最后重启即可进入系统进行配置了。

file

7. 点击接受许可证,大功告成了!

file

对于程序员而言是否需要学习Linux?有需要学些什么?

什么是Linux?

Linux的详细由来自己去百度吧。
我对Linux的理解很简单:Linux是专门为服务器设计的操作系统。

程序员是否需要学Linux?

我觉得主要是看你的工作性质。
如果你是纯开发人员,不涉及服务器运维、负载均衡等工作的话,其实不学Linux也无所谓。

Linux学些什么?

作为程序员,如果作为知识扩充或者希望扩大自己的技术接触面的话。学习下Linux还是很有用的,那么具体学些什么呢?

  1. 学习Linux的世界观。
    用“世界观”这个词有些大,但其实很贴切。在Windows中,没人会在纯DOS下完成所有工作,而在Linux中,很有可能所有工作都是在小黑窗下完成的。所以,学习Linux最重要的一点就是要习惯Linux的世界观,习惯在小黑窗下(命令行)下完成所有工作。
  2. Linux的常用指令。
    比如:ls,cd,mkdir,vim这些常用命令。一开始不用死记硬背,用的时候百度下其实就可以了,慢慢的就都会记熟了。
  3. Linux的目录结构。
    每个文件件的作用,平时怎么使用这些文件夹。
  4. 用相关Windows软件和Linux服务器做数据传输。
    在Windows上通过FTP客户端,XShell等和Linux做数据传输。
  5. 常用的Linux环境配置和部署。
    视你的工作情景,学会在Linux上配置PHP环境、JAVA环境,并学会如何部署相关的程序。

以上这些可能你会觉得有些多,其实真正学的话,半天时间足够了。

程序员平时需要在Linux环境下做开发吗?

我个人认为是不需要的。
很多程序员喜欢耍酷,喜欢在Linux做开发。根据我个人经验,这么做除了酷之外,没啥实际意义。因为Windows下的IDE和辅助工具比Linux好的太多了。
你需要做的就是需要使用Linux的时候可以通过命令行完成基本的工作,让别人知道你也可以使用Linux,这其实已经很酷了!
记住,Linux是为服务器设计的操作系统,不是为PC机,所以不要钻牛角尖。