Liunx笔记

1,286 阅读6分钟

记录学习Liunx的笔记,内容比较杂。

配置centos7的网络

在创建的时候一定要选择桥接网络,在centos7中查看本机的ip地址不再是ifconfig命令,而是由ip addr来代替

$ ip addr

通过ip addr命名查询到我们网卡的名字后,可以进入以下文件中修改网路配置

$ vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
# 在文件中需要修改的内容如下:
# 把BOOTPROTO修改为static
BOOTPROTO=static
# 把ONBOOT修改为yes
ONBOOT=YES
# 添加以下内容
IPADDR=192.168.0.30 # 这个ip地址要对应这本机的ip,要处于同一个网段 
GATEWAY=192.168.0.1 # 网关地址
NETMASK=255.255.255.0 # 子网掩码
DNS1=8.8.8.8 # DNS1
DNS2=114.114.114.114 # DNS2

修改好以上后退出保存重启网卡,修改DNS还可以在/etc/resolv.conf下添加nameserver 8.8.8.8修改,重启后基本上就可以ping同外网了。

centos6的网卡重启方法:service network restart
centos7的网卡重启方法:systemctl restart network

关闭防火墙

1.
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld 
开机禁用  : systemctl disable firewalld
开机启用  : systemctl enable firewalld
那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=2375/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=2375/tcp
删除
firewall-cmd --zone= public --remove-port=2375/tcp --permanent
 
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
 
3.配置firewalld-cmd
 
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息:  firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic

liunx升级内核

可以通过uname -r查看自己的内核版本是多少

  • 导入public key
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
  • 安装 kernel-lt(lt=long-term) 这里需要注意的是,在 ELRepo 中有两个内核选项,一个是 kernel-lt(长期支持版本),一个是 kernel-ml(主线最新版本),采用长期支持版本(kernel-lt),更稳定一些
$ yum --enablerepo=elrepo-kernel install kernel-lt -y
# 或者
$ yum --enablerepo=elrepo-kernel install kernel-ml -y
  • centos6中编辑/etc/grub.conf文件,修改Grub引导顺序
# 因为一般新安装的内核在第一个位置,所以设置default=0,表示启动新内核
$ vim /etc/grub.conf 
# 之后重启虚拟机以后  可通过uname -r再次查看内核版本
  • centos7中进入/etc/grub2.cfg文件中
$ vim /etc/grub2.cfg

20190410132040

可以看到我有两个系统内核,把内核为4.4的单引号中的内容复制,在命令行中运行以下命令

# 配置默认内核 
$ grub2-set-default 'CentOS Linux (4.4.153-1.el7.elrepo.x86_64) 7 (Core)'
# 查看是否设置成功
$ grub2-editenv list
# 重启liunx主机
$ reboot

修改centos7的主机名称

在CentOS 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置,只查看静态、瞬态或灵活主机名,分别使用“--static”,“--transient”或“--pretty”选项。

  • 例如,要永久修改主机名,你可以修改静态主机名:
$ hostnamectl --static set-hostname node01
  • 修改/etc/hosts文件添加
127.0.0.1 node01
$ reboot

ubuntu中使用apt-get安装的mysql如何登录 5.7版本

使用apt-get安装的mysql不知道root的密码,所以以root身份是登陆不上去的,这时我们需要做以下操作:

  • 其实 debian 系的 MySQL 安装过程中会设置一个默认的账户,这个文件里保存了默认账号的信息
$ cat /etc/mysql/debian.cnf
  • 以上文件内容中有账户和密码,然后我们就可以用这个账号登录 MySQL
$ mysql -u debian-default-account -p defaultpassword
  • 设置root用户的密码
$ use mysql
$ set password for 'root'@'localhost' = password('yourpass');
$ flush privileges;

Ubuntu配置网络(有可能是个例)

如果是双网卡的话,使用ip add显示的网卡名字有可能是p1p1 OR p3p1这种名字,单网卡可能就是eth0,视情况而定

$ vi /etc/network/interfaces
# 添加以下内容
auto p3p1
iface p3p1 inet static
address 192.18.0.119
netmark 255.255.255.0
gateway 192.168.0.1
# 添加dns
$ vi /etc/resolv.conf
nameserver 223.5.5.5
nameserver 223.6.6.6
# 确保dns不会在重启电脑后失效
$ vi /etc/resolvconf/resolv.conf.d/base
naseserver 223.5.5.5
nameserver 223.6.6.6

运行命令生效dns

$ resolvconf -u

运行命令生效网络

$ ifdown p3p1 && ifup p3p1

ubuntu 18.04 修改dns服务

首先修改 /etc/systemd/resolved.conf 文件,在其中添加dns信息,例如:

[Resolve]
DNS=8.8.8.8 114.114.114.114
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no-negative
#DNSStubListener=yes
#ReadEtcHosts=yes

保存退出。然后以root身份在终端中依次执行如下命令:

sudo systemctl restart systemd-resolved
sudo systemctl enable systemd-resolved
 
sudo mv /etc/resolv.conf  /etc/resolv.conf.bak
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

如果是systemd-networkd服务的话需要配置以下文件

$ vi /etc/systemd/network/10-ens33-static.network

[Match]
Name=ens33
[Network]
Address=192.168.0.35/24
Gateway=192.168.0.1
DNS=255.5.5.5

linux清除缓存

  • 查看磁盘空间
# 查看那些文件比较大以及查看查看磁盘空间
$ du -h --max-depth=1
# 查看内存情况
$ free -h
# 查看磁盘空间
$ df -hl
  • 清除内存缓存
$ echo 1 > /proc/sys/vm/drop_caches

linux用户操作

给用户多添加一个组

# 建议使用这种方式
$ gpasswd -a user_name group_name
OR
$ usermod -a -G 用户组 用户名
# -G:给用户添加一个附属组

添加用户并且允许用户在创建好的文件夹中操作

# 添加用户,主组是kernel,副组是wheel和adm,用户名是ywh
$ useradd -s /bin/bash -d /home/ywh -m -G wheel,sudo ywh
# -d 指定用户登录目录,如果不使用-d指定的话,-m也会在/home下创建一个目录用来登录,如果没有特别指定的话,无需使用-d参数
# -s 指定用户登入后所使用的shell
# -G 指定用户的附属组

$ mkdir kernelbuild
# 把这个文件的权限赋值给kernel组, -R 表示递归把下面所有的文件都变成kernel组
$ chgrp -R kernel kernelbuild
# 操作的用户也分给新创建的用户ywh
$ chown -R ywh kernelbuidl

普通用户使用sudo时输入root用户的密码

$ su
# 添加内容,记得把用户添加到wheel或者sudo组内
$ vim /etc/sudoers
Defaults runaspw

删除一个用户

$ userdel -r ywh

Arch Linux 安装

记得把/etc/resolv.cof配上dns服务器

Arch Linux 中安装NFS服务

服务端

因为是Arch Linux的安装方式,所以如果是其他的系统请自行查阅

# 安装nfs服务
$ pacman -Sy nfs-utils

配置nfs服务,假设要共享的目录是 /mnt/nfs

# 创建要共享的文件夹
$ mkdir /mnt/nfs
# 配置nfs的共享目录
$ vim /etc/exports

/mnt/nfs *(rw,sync,no_root_squash,no_subtree_check)

# 每一次修改exports文件都需要运行以下命令
$ exportfs -ra

# 开启nfs服务
$ systemctl start nfs-server.service
# 开机自启服务
$ systemctl enable nfs-server.service

客户端

$ systemctl start rpcbind.service
$ systemctl start nfs-client.target
$ systemctl start remote-fs.target
$ systemctl enable rpcbind.service
$ systemctl enable nfs-client.target
$ systemctl enable remote-fs.target

嵌入式设备需要加参数 -o nolock,如果不是嵌入式设备的话就不用加了

$ mount -t nfs -o nolock 192.168.1.122:/home/ywh/build /mnt/nfs

对shell脚本加密

shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、密码等不希望公开的问题.

下载 shc-3.8.9b.tgz 以后上传到liunx机器中对其进行解压。

$ tar -xvf shc-3.8.9b.tgz
$ cd shc-3.8.9b
# 创建man1目录是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;
# 将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装
$ mkdir -p /usr/local/man/man1
$ make install
# 接下来要输入 yes

使用方法如下

$ shc -r -f script-name

运行后会生成两个文件,script-name.x 和 script-name.x.c. 其中script-name.x是加密后的可执行的二进制文件;用./script-name即可运行,script-name.x.c是生成script-name.x的原文件(c语言).

自定义 system 服务

shell脚本多行注释

#!/bin/bash

:<<EOF
echo "1"
echo "1"
echo "1"
echo "1"
echo "1"
EOF

echo 2

只输出2

误删除libc.so.6的解决方法

删除libc.so.6文件后,会报错

error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

可通过以下命令恢复

$ LD_PRELOAD=/lib64/libc-2.29.so ln -sf /lib64/libc-2.29.so /lib64/libc.so.6 

libc.so.6 文件其实就是链接的 libc-2.29.so 文件,有可能每个人的版本不一样,虽然不能使用ls or ll命令了,但是也是可以看到系统中的这个文件的,然后通过上述命令就可以恢复了。

linux中jar包后台运行

$ nohup java -jar shareniu.jar > temp.txt &

输出信息重定向到temp.txt

sed操作

$ sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
# 例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cn
$ sed -i "s/www.bcak.com.cn/bcak.com.cn/g" `grep www.bcak.com.cn -rl /home`
# 在指定字符后面添加内容,把BBB添加到1111后面
$ sed -i 's/指定的字符/&要插入的字符/'  文件
$ sed -i  's/1111/&BBB/' /tmp/input.txt
# 在指定字符前面添加内容
$ sed -i 's/指定的字符/要插入的字符&/'  文件
$ sed -i  's/1111/BBB&/' /tmp/input.txt

sed中添加变量

在shell中拼接字符串是两个字符串挨在一起就可以了不用向java中一样加+号相连,所以在两个字符串中间写变量即可

$ sed -i 's/name/'${usb1}'/' test.using

shell字符串截取

vm虚拟机对ubuntu扩容 lvm模式

首先在vm虚拟机中对磁盘扩展后再运行一下命令

进入以后输入p,会显示磁盘情况,我们的根目录挂在再sda3中,也就是编号Number3

输入resizepart 3后 输入q退出即可

# 
# 输入resizepart 3后  输入q退出即可
$ parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1076MB  1074MB  ext4
 3      1076MB  26.8GB  25.8GB

(parted) resizepart 3
End?  [26.8GB]? 50GB                                                      
(parted) q                                                                
Information: You may need to update /etc/fstab.

上面命令对磁盘sda3进行扩容,现在对逻辑卷扩容

$ pvresize /dev/sda3
# 查看可以看到当前已经扩容
$ pvs
  PV         VG        Fmt  Attr PSize  PFree
  /dev/sda3  ubuntu-vg lvm2 a--  45.56g    0
  
# 刷新逻辑卷即可
$ resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv