Linux 知识整理02

Author Avatar
cuteximi 11月 03, 2017
  • 在其它设备中阅读本文章

linux 学习记录03

要注意的地方

时刻提醒自己!

  • 保持记笔记的习惯,按照统一(md)的格式可以每节课结束记一次,中午吃完饭总结上午学的东西,记录一次。下午学完总结下午所学的知识。晚上总结全天的学习记录。
  • 周总结可以使用md、思维导图
  • 不要让自己懒,想办法让自己保持专注,借助外力或者内在的暗示。
  • 要有提前意识,预习,准备简历,准备笔试面试。
  • 多与老师交流,先思考,再去问问题、
  • 学习资料在网上找,或者找前辈要
  • 白天听老师将一遍,晚上可以看别的机构的老师讲的内容,作为补充,此时视频可以为多倍速播放
  • 回顾java的基础部分和Java web开发的知识点
  • 多练习,多总结,要扎实基础。
  • 记住节奏很快的,不要装懂。

今日学习目标

  • 网络进程
  • 系统服务
  • 定时任务
  • Linux安全
  • 常用命令操作
  • Tomcat
  • JDK环境配置
  • 克隆虚拟机
  • mysql安装以及简单配置
  • 免密登录配置

日间阶段总结

MORNING

6:00 - 8:00

8:00 - 10:00

1.chkconfig 可以列出系统的服务
2.service 的四种操作 start stop restart status, 比如可以使用 service iptables status 查看防火墙的状态。
service 的开启或者关闭都是临时关闭或者开启,要想永久生效就要修改系统服务层的东西。
使用 chkconfig 服务名 off / on 对某个服务进行永久关闭或开启、
3.添加自己的服务
/etc/init.d 文件夹下面有很多服务脚本。

可以编写一个自己的服务脚本:

复制脚步到 /etc/init.d 目录下面 cp
添加服务到系统:chkconfig –add 脚本名字
chkconfig –del 服务名

参考Linux chkconfig 命令详解

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig –add servicename
使用chkconfig工具在服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
4.chkconfig –level 35 mysqld on
修改服务的默认启动等级。

init.d 是一个软连接指向 rc.init.d, 软连接会指向真实的文件,软连接的权限都是777

NOON

10:00 - 11:00

1.定时调度
使用命令 cront -e 打开一个编辑器。编写格式如下:
分钟 小时 天 月 dayofmonth command 的格式编写定时任务即可。
使用 cront -l 查看所有的定时任务。

2.Linux的一个安全策略 selinux ,推荐关闭。
使用 sestatus -v 查看状态,使用 setenforce 0 临时关闭
编辑 /etc/selinux/config 修改 selinux=disabled ,重启计算机。

11:10 - 12:00

进程:
ps 命令 一般加上参数 -ef 代表所有、全格式

动态的查看:
使用 top 命令

使用 & 符号,加在命令后面,可以使得命令进入后台运行。
比如 ping www.baidu.com & 执行之后,就会进入后台一直执行,直到被挂起。

jobs -l 可以查看当前连接(终端)下的后台进程。
依次显示后台程序的jobnum ,pid ,状态,以及命令

image.png | left | 747x45

如果想查看系统的后台进程使用 ps -ef | grep 某进程

如果不想让你的后台进程被挂起 ,可以使用 nohup(不挂断) 命令。

总结:一般 & 和 nohup 结合使用。例子:nohup ping www.baidu.com &

有一部分内容参考了这里:https://blog.csdn.net/u013846293/article/details/74003051

杀掉进程,使用 kill 命令
可以根据 jobs 显示的jobnum, kill jobnum
或者根据 ps 显示的pid , kill -9 pid

如果是一个前台命令的话,使用 ctrl+c 就停止了。
但是一个后台命令,也可以变成前台命令吗?可以的。

使用 fg 命令可以使得一个后台的命令变至前台执行。fg jobnum
使用 bg 左右正好相反。bg jobnum

例子:nohup ping www.baidu.com > log 2>&1 &
就会在后台运行一个程序。
使用tail -f log 可以追踪查看该文件的内容。tail 默认展示10行,-n 参数可以指定行数

yum安装程序。配置yum源是在 /etc/yumrespo.d目录下。

rpm 也能安装 .rpm 安装包。
rpm -aq | grep 程序 可以查看是否安装
rpm -ivh xxx.rpm 进行安装
rpm -e 程序,卸载

tar

解压:tar -zxvf XXX.tar.gz
压缩:tar -zcf 文件夹 xx.tar

zip

解压 unzip 包
压缩 zip -r 文件夹 XX.zip

谨记,下载程序包去官网下载:
jdk7链接

12:00 - 14:00

整理上午所学的内容,休息一下。预习一下下午的内容,

AFTERNOON

14:00 - 16:00

centos 安装 使用 yum 安装mysql
1.yum install mysql-server -y
2.yum install mysql-devel -y

等待安装完毕。
3.启动
service mysqld start 启动 mysql 服务器。
除出安装是木有 root 用户的,因为可以直接使用 mysql 命令进入mysql服务器、

4.连接
mysql

image.png | left | 747x295

然后可以在这个交互界面里面,进行一些操作,比如:
show databases;
show tables;
select * from …

等等
exit; 是退出这个交互终端。

使用 mysqladmin 来新增一个 root 用户。

5.新增 root 用户

mysqladmin -u root password 123456

此时再想单纯的使用 mysql 命令是无法登录的,会报错,如下:

image.png | left | 747x46

这是就必须使用用户和免密登录。
mysql -uroot -p 意思是使用 root 登录访问 mysql 服务器。成功如下图

image.png | left | 747x295

6.使用 物理机连接 mysql 服务器

这里有一个小限制,mysql 默认是不接受远程访问的。所以需要改一下配置。
有两种方案:
修改 user 表。
select user,host,password from user;

image.png | left | 747x313

把上图所示的host改一下,改成 % 代表什么都可以就好了!!开放了远程连接。也就是远程也可以使用root用户。

16:00 - 18:00

18:00 - 20:00

EVENING

20:00 - 22:00

22:00 - 24:00

学习进度

一天总结

进程

1.查看进程
ps 命令可以查看进程,用法一般是:
ps -ef 或者 ps -ef | grep 进程名
ps 命令 一般加上参数 -ef 代表所有、全格式

动态的查看:
使用 top 命令

2.后台进程
使用 & 符号,加在命令后面,可以使得命令进入后台运行。
比如 ping www.baidu.com & 执行之后,就会进入后台一直执行,直到被挂起。

jobs -l 可以查看当前连接(终端)下的后台进程。
依次显示后台程序的jobnum ,pid ,状态,以及命令

nohup 保证后台进程不会被挂起。

结:一般 & 和 nohup 结合使用。例子:nohup ping www.baidu.com &

有一部分内容参考了这里:https://blog.csdn.net/u013846293/article/details/74003051

3.杀掉进程

杀掉进程,使用 kill 命令
可以根据 jobs 显示的jobnum, kill jobnum
或者根据 ps 显示的pid , kill -9 pid

4.前后台进程转换
如果是一个前台命令的话,使用 ctrl+c 就停止了。
但是一个后台命令,也可以变成前台命令吗?可以的。

使用 fg 命令可以使得一个后台的命令变至前台执行。fg jobnum
使用 bg 左右正好相反。bg jobnum

系统服务

简单的,以networking为例:service network start
service 会到 /etc/init.d/目录下寻找 network 脚本。start 是 network 脚本里面的一个参数。然后告诉系统,运行这个脚本

1.查看系统服务
使用 chkconfig 命令,直接列出系统服务信息;

2.设置开机启动或关闭
使用chkconfig 服务名 on 或者 off

3.添加服务
编写脚本,并赋权755即可。格式如下:

#chkconfig 2345 85 90
#description:auto_run
......

将脚本 cp 到 /etc/init.d 中, 此时就可以使用 service 脚本 来运行了,但是如果你想弄成开机启动的服务,就得加到开启启动列表里面了,使用 chkconfig –add COMMAND 就把这个脚本加到了启动列表里里面。

4.删除服务
chkconfig –del 服务名

定时任务

crond 命令,周期性的执行某些定时任务,是一个守护进程。
使用: crond -e 命令会打开定时任务的配置文件。

Linux 安全

selinux 是一个 Linux 的一个安全策略 DAC–MAC。
1.sestatus -v 查看 selinux 的状态
2.编辑 /etc/selinux/config 将 selinux 的值改为 disabled, 需要重启机器。
3.如果只想临时关闭呢,使用 setenforce 0, 不会修改文件,下次重启恢复默认的。

一些其他的常用命令

yum 软件包管理器

更改成在线的yum源,换成阿里的,操作步骤如下:
1.备份原来的 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
2.下载阿里的源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
3.运行 yum makecache(目的是将服务器上的软件包信息下载到本地,以加快软件包的搜索速度)

查看当前的 yum list

wget
支持 HTTP,HTTPS,FTP 三种协议,可以下载网络资源。
wget -O 指定文件保存到哪
安装wget , yum install wget -y

rpm 软件包管理器

安装:rpm -ivh 包
查看:rpm -a 包
卸载 : rpm -e 包的全名

tar

解压 tar -zxvf xxx.tar.gz
压缩 tar -zcvf xxx.tart.gz 要压缩的文件夹

zip

zip -r 包名 目标目录
unzip filename

JDK环境配置

jdk7 下载地址 : https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
使用 rpm -ivh xxx.rpm 进行安装
编辑编辑变量,添加 JAVA_HOME即可

克隆虚拟机

注意克隆之后,要更改 hostname ,还要删除网卡的规则,修改网卡的ip
vim /etc/sysconfig/network
rm -rf /etc/udev/rules.d/70-persistent-net.rules

mysql安装以及简单配置

使用 yum 安装
1.yum install mysql-server -y
2.yum install mysql-devel -y

3.启动 service mysqld start

此时 root 用户是没有免密的,可以直接使用 mysql命令 就可以连接上服务器。
4.使用 mysqladmin -u root password 123456 给 root 用户指定密码123456
5.登录:使用 mysql -uroot -p ,根据提示输入密码即可。

完成上述步骤之后,只能在本地连接 mysql 服务器、要想可以远程连接,必须修改 user 表的 host 字段

1.直接修改 hosts为%
2.使用grant all privileges on . to 'root'@'%' identified by '123456' with grant option;

免密登录配置

配置简单。主要涉及到的原理需要理解。

原理
SSH以非对称加密实现身份验证,所以它是比较安全的。

身份验证有多种途径,例如①其中一种方法是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录;②另一种方法是人工生成一对公钥和私钥,通过生成的密钥进行认证,这样就可以在不输入密码的情况下登录。任何人都可以自行生成密钥。公钥需要放在待访问的电脑之中,而对应的私钥需要由用户自行保管。认证过程基于生成出来的私钥,但整个认证过程私钥本身中不会传输到网络中。

如何新建密钥对呢?

1.查是否已存在密钥对,打开终端(Terminal):

输入:ls -al ~/.ssh

2、如果没有,则需要我们手动创建

输入:ssh-keygen -t rsa -b 4096 -C "your_email"

ssh-keygen 是生成秘钥的工具之一。

-t 参数指定加密算法,-b 参数指定长度

用法如下:

-t rsa -b 4096

3.将公钥发送到服务器

使用 ssh-copy-id 工具。

用法:

ssh-copy-id -i 公钥位置 user@host

之后会提示输入密码进行认证。

在这之后,公钥就会被添加到 服务器上的 ~/.ssh/authorized_keys 文件了里面。

一旦在服务器上配置了公钥,服务器会允许任何具有私钥的客户端进行连接用户登录,在登录的过程中,客户端会通过数字签名交换来证明拥有私钥。

免密登录图解

创建密钥并添加到服务器上。

image | left

登录认证流程

值得注意的是:服务端的 .ssh目录权限必须是700(rwx——),authorized_keys文件的权限是600(rw——-)

image | left

部分参考https://www.ssh.com/ssh/keygen/#sec-What-Is-ssh-keygen

Linux安装Tomcat

Tomcat 是一个免费开源的 web 服务器。

  1. Tomcat 7 下载地址:https://tomcat.apache.org/download-70.cgi
  2. 也可以镜像下载:wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/src/apache-tomcat-7.0.91-src.tar.gz 后面出问题了,验证这个源选错了,应该是下面这个:选bin下面的包,http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/bin/apache-tomcat-7.0.91.tar.gz

image.png | left | 719x251

  1. Tomcat 7 的官方文档,https://tomcat.apache.org/tomcat-7.0-doc/introduction.html
    Tomcat 是免安装的,直接把环境变量配置好就 OK 的。
  2. 启动使用 ./startup.sh 关闭使用 ./shutdown.sh

image.png | left | 747x311

  1. 配置环境变量

遇到的问题以及解决方案

问题1

【问题描述】

修改hostname 并立即生效,但是不想重启服务器

【问题思路】

【解决方案】
修改了/etc/sysconfig/network下的HOSTNAME后,然后使用 hostname name 生效一下。

问题2

【问题描述】

连接远程 mysql 服务器,需要注意的地方

【问题思路】

【解决方案】

  1. 注意防火墙要关闭
  2. 注意 user 表的host 的字段是否设置好了。
    两种设置方式:
    :tada:grant all privileges on . to 'root'@'%' identified by '123456' with grant option;
    :tada:直接修改user表的hosts字段,改为 %

    3.注意能够ping 同服务器。

问题3

【问题描述】

指定明文密码报错,ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

image.png | left | 747x58

【问题思路】

41位十六进制数:41-digit hexadecimal number

【解决方案】
使用 select password(‘你要设置的密码’)

image.png | left | 686x262

这就就可以直接指定密码了。

image.png | left | 747x197

问题4

【问题描述】

下载tomcat之后,目录里面缺少一些东西,比如没有logs ,另外bin 目录下的脚本都没有执行权限。

【问题思路】
修改过脚本的执行权限之后,在bin目录下执行 ./startup.sh ,报错:

Using CATALINA_BASE:   /opt/apache-tomcat-7.0.91
Using CATALINA_HOME:   /opt/apache-tomcat-7.0.91
Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.91/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/apache-tomcat-7.0.91/bin/bootstrap.jar:/opt/apache-tomcat-7.0.91/bin/tomcat-juli.jar
touch: cannot touch /opt/apache-tomcat-7.0.91/logs/catalina.out': No such file or directory
/opt/apache-tomcat-7.0.91/bin/catalina.sh: line 439: /opt/apache-tomcat-7.0.91/logs/catalina.out: No such file or directory

一开始想的是,新增一个 logs 目录不记得了,上网一查才指定,自己下的包是源码包,应该下在一个编译好的包。
下载源:http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/bin/apache-tomcat-7.0.91.tar.gz
【解决方案】
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.91/bin/apache-tomcat-7.0.91.tar.gz
这个包,解压之后,有logs目录,并且 bin 下面的几个脚本默认有执行权限的。

image.png | left | 747x437

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://blog.cuteximi.com/linux02/