记录学习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
- 安装ELRepo到CentOS 可以通过 elrepo.org/tiki/tiki-i… 获取最新内核
$ 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
可以看到我有两个系统内核,把内核为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