Linux 学习笔记
老李 Lv4

跟系统任务相关的几个命令

fg、bg、jobs、&、ctrl+z

  1. & 这个用在一个命令的最后,可以把这个命令放到后台执行
  2. ctrl + z 可以将一个正在前台执行的命令放到后台,并且暂停
  3. jobs 查看当前有多少在后台运行的命令
  4. fg 将后台中的命令调至前台继续运行,如果后台中有多个命令。可以用 fg %jobnumber 将选中的命令调出,%jobnumber 是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
  5. bg 将一个在后台暂停的命令,变成继续执行。如果后台中有多个命令,可以用 bg %jobnumber 将选中的命令调出,%jobnumber 是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

查看端口号

1
$ netstat -anp | grep 1099

创建用户,用户组

创建用户组

1
2
3
addgroup thor
adduser thor -g thor
usermod -g thor thor

CENTOS 7

安装软件(通过镜像文件来安装)

1、挂载镜像文件:

1
$ mount /dev/cdrom /media      # 将镜像文件挂载在 /media 目录下

2、查找相应的安装包

1
$ find /media -name '*name*'   # 模糊查找相关的安装包

2、安装 FTP 工具

1
2
$ find /media -name '*ftp*'
$ rpm -i /media/Packages/ftp----.rpm

3、安装 WGET 工具

1
2
$ find /media -name '*wget*'
$ rpm -i /media/Packages/wget----.rpm

4、安装 IFCONFIG 工具

1
2
$ find /media -name '*net-tools*'
$ rpm -i /media/Packages/net-tools----.rpm

6、安装 TELNET 工具

1
$ yum -y install telnet

配置静态 IP

1、查看 NDS 配置文件,记住 DHCP 时使用的 DNS

1
$ cat /etc/resolv.conf

2、修改网络配置文件

1
2
3
4
5
6
7
8
$ vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 修改或添加如下内容:
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.2.15
GATEWAY=10.0.2.2
NETMASK=255.255.255.0
DNS1=221.130.33.60

3、重启网络服务

1
$ service network restart

配置直接进入系统

1
2
3
$ vim /etc/grub.d/00_header
# 进行如下修改
GRUB_TIMEOUT=5 --> GRUB_TIMEOUT=0

zookeeper 加入开机自启动

  1. 1
    $ cd /etc/init.d/
  2. 1
    $ touch zookeeper
  3. 1
    $ chmod +x zookeeper
  4. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ vim zookeeper
    # 加入如下内容
    #!/bin/bash
    #chkconfig:2345 20 90
    #description:zookeeper
    #processname:zookeeper
    JAVA_HOME=/usr/local/soft/jdk1.8.0_121
    PATH=${JAVA_HOME}/bin:$PATH
    case $1 in
    start) /opt/zookeeper-3.4.10/bin/zkServer.sh start;;
    stop) /opt/zookeeper-3.4.10/bin/zkServer.sh stop;;
    status) /opt/zookeeper-3.4.10/bin/zkServer.sh status;;
    restart) /opt/zookeeper-3.4.10/bin/zkServer.sh restart;;
    *) echo "require start|stop|status|restart";;
    esac
  5. 1
    $ service zookeeper start       # 启动服务
  6. 1
    $ chkconfig --add zookeeper     # 添加到开机自启动

注意此时的 JAVA_HOME ,当 JAVA_HOME 配置在 /etc/profile 或者账号 .bashrc 的时候,系统 boot 是加载不到的 。 所以依赖 java 的服务启动都会有问题。

linux 免密码登陆

生成密钥

1
$ ssh-keygen -t rsa

创建 authorized_keys

1
$ touch authorized_keys

将公钥导入 authorized_keys

1
$ cat id_rsa.pub >> authorized_keys

重置 root 密码

1
$ passwd

重置为 bonc_nlp

关闭防火墙

关闭防火墙

1
2
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service

卸载 openjdk 安装 sun jdk

查找 OpenJDK 安装包

1
$ rpm -qa | grep openjdk

卸载 OpenJDK 安装包

1
2
$ yum -y remove java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
$ yum -y remove java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64

安装 sun jdk

1
2
3
4
5
6
$ tar zxf jdk-8u121-linux-x64.tar.gz -C /opt/
$ vim /etc/profile
# 加入如下内容
export JAVA_HOME=/opt/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

安装 MYSQL

两种安装方式

在线安装

配置 YUM 源

1
2
$ wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ yum localinstall mysql57-community-release-el7-8.noarch.rpm

安装 MYSQL

1
$ yum install mysql-community-server
离线安装

卸载 MARIADB

1
2
$ rpm -qa | grep mariadb
$ rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

安装 MYSQL

1
2
3
4
5
$ rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
$ rpm -ivh mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm

启动 MYSQL 服务

1
$ systemctl start mysqld

开机启动

1
2
$ systemctl enable mysqld
$ systemctl daemon-reload

禁用 MYSQL 密码策略

1
2
3
4
$# vim /etc/my.cnf
# 加入如下内容
validate_password = off
$ systemctl restart mysqld

修改 root 默认密码

1
2
3
$ cat /var/log/mysqld.log | grep password   # 查看 root 密码
$ mysql -uroot -p
mysql> set password for 'root'@'localhost'=password('root');

添加远程登录用户

1
2
3
4
5
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'admin' WITH GRANT OPTION;
#如果还不能远程登陆,进行下面操作:
$ vim /etc/mysql/my.cnf
# 进行如下修改
bind-address = 127.0.0.1 --> bind-address = 0.0.0.0(设备地址)

配置默认编码为 utf8

1
2
3
4
5
$ vim /etc/my.cnf
# 加入如下内容
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

安装 mycli

安装 epel 源

1
2
# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm

安装 python-pip

1
2
# yum -y install python-pip
# yum clean all

安装 mycli

1
2
# yum install python-devel
# pip install mycli

使用 mycli

1
# mycli -uadmin -padmin -h127.0.0.1 -P3306

取消搜索高亮

1
:nohl

解决 shell 脚本异常:/bin/sh^M:bad interpreter: No such file or directory

1
2
3
4
# 在 vim 中设置文件格式
:set ff=unix 或 :set fileformat=unix
# 在 vim 中查看文件格式
:set ff 或 :set fileformat

Linux 中获得当前目录

使用 basename 和 pwd 命令

1
basename `pwd`

使用 ## 拆分 PWD 变量

${var##pattern} 可以从 $var 变量中,去掉可以匹配 pattern 最大长度的字符串,所以,要获得目录名,可以:

1
2
3
cd /var/log/squid
echo ${PWD##*/}
$PWD 是保存目录完整路径的环境变量,pattern 就是 */,也就是去掉了前面所有的上级目录。

使用 awk 和 rev

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /usr/share/cups/data
pwd | rev | awk –F \/ '{print $1}' | rev
结果:data
把结果分步显示,你就知道原理了:
pwd
/usr/share/cups/data
pwd | rev
atad/supc/erahs/rsu/
pwd | rev | awk –F \/ '{print $1}'
atad
pwd | rev | awk –F \/ '{print $1}' | rev
data
-F 选项是指定分隔符,目录之间分隔符为 /。

使用 sed

1
2
3
4
cd /home/smith/music
pwd | sed 's,^\(.*/\)\?\([^/]*\),\2,'
结果:music
第一个 pattern,^\(.*/\)?,匹配 / 符号前所有的东西,第二个 [^/]* ,匹配剩余部分不包含 / 的部分。

CentOS 修改主机名

修改 /etc/hostname 文件中的主机名即可,为了能使用主机名访问本机,需要修改 /etc/hosts 中的主机名