一次运维中，卸载了原先的nginx服务，改用docker运行宝塔面板，在宝塔中安装nginx，并使用host网络。但是卸载宿主机中的nginx服务后，启动宝塔容器却发现nginx无法启动。使用netstat|grep 80或者lsof -i:80命令都无法查询到占用80端口的服务。后发现直接访问宿主机ip地址可以打开一个网页，如上图。但是找不到该占用的程序。最终只能通过whereis apache2找到所有apache2目录然后sudo rm -rf /xx/xx/apache2删除相关的所有目录。重启系统后，docker版宝塔正常运行nginx
{alert type="info"}把一些 Windows 上创建的文件发送到 Ubuntu 后，这些文件（文件夹、压缩包等）的文件名会乱码原因为 windows 下的文件名以 GBK 编码，而 Ubuntu 下的文件名为 utf-8 编码。{/alert}convmvconvmv 就是更改文件名编码方式的一个工具。比如如果未安装该命令，则先安装sudo apt-get install convmvsudo convmv -f gbk -t utf-8 -r --notest /home就是将 /home 目录下原来文件名是 gbk 编码方式的全部改为 utf-8 格式的。-f gbk #原来的编码方式 -t utf-8 #要转变成的编码方式 -r #递归处理目录下所有文件 --notest #非测试，立即执行iconviconv 是更改文件编码方式的一个工具：sudo iconv -f gbk -t utf-8 -o outfile sourcefile-f gbk #原来的编码方式 -t utf-8 #要转变成的编码方式 -o outfile #输出文件名 sourcefile #源文件名
1.卸载软件和配置文件sudo apt-get --purge remove nginx删除 nginx，配置文件 –purge2.移除全部不使用的软件包sudo apt-get autoremove 3.列出nginx相关的软件dpkg --get-selections|grep nginx执行结果：zhangsan@xx-ubuntu:~$ dpkg --get-selections|grep nginx nginx install nginx-common install nginx-core install 4.删除nginx相关的软件sudo apt-get --purge remove nginx sudo apt-get --purge remove nginx-common sudo apt-get --purge remove nginx-core这样就可以完全卸载掉nginx包括配置文件5.查看nginx正在运行的进程，如果有就杀掉ps -ef |grep nginxzhangsan@xx-ubuntu:~$ ps -ef |grep nginx root 7875 2317 0 15:02 ? 00:00:00 nginx: master process /usr/sbin/nginx www-data 7876 7875 0 15:02 ? 00:00:00 nginx: worker process www-data 7877 7875 0 15:02 ? 00:00:00 nginx: worker process www-data 7878 7875 0 15:02 ? 00:00:00 nginx: worker process www-data 7879 7875 0 15:02 ? 00:00:00 nginx: worker process stephen 8321 3510 0 15:20 pts/0 00:00:00 grep --color=auto nginx6.kill nginx进程sudo kill -9 7875 7876 7877 7879 7.全局查找与nginx相关的文件sudo find / -name nginx* 8.依依删除4列出的所有文件sudo rm -rf file 9.再次重装sudo apt-get update && sudo apt-get install nginx
一、安装1、查看内核uname -r2、更新包sudo apt-get update3、没有docker旧版本，忽略这一步。如果有则需要卸载旧的版本，主要为了防止新旧版本冲突sudo apt-get remove docker docker-engine docker.io containerd runc4、为了防止 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。我们需要添加使用 HTTPS 传输的软件包及 CA 证书sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release5、确认下载软件包的合法性，需要添加软件源的 GPG 密钥，但因网络问题设置docker源改为国内源(阿里)curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg或curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -6、向 source.list 中添加 Docker CE 软件源sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"或使用https://mirrors.ustc.edu.cn源（失效）sudo add-apt-repository "deb [arch=armhf] https://mirrors.ustc.edu.cn/docker-ce/linux/raspbian $(lsb_release -cs) stable"7、安装sudo apt-get -y install docker.io或sudo apt-get install docker-ce docker-ce-cli containerd.io启动dockersudo systemctl start dockerdocker换源修改 /etc/docker/daemon.json (如果该文件不存在，则创建){ "registry-mirrors": [ "https://hub-mirror.c.163.com" ] }sudo systemctl daemon-reload && sudo systemctl restart docker添加用户到docker用户组
调整路由器网络后，虚拟机ubuntu连不上网络问题
由于访问某些科学网站的需要，需要调整移动直连光猫的路由器。改为光猫直连交换机，再连路由器。实际上网络状态并没有变得更好，因为移动宽带没用电信宽带好用。调整后没想到出现了意想不到的问题。调整路由器网络后，虚拟机ubuntu连不上网络问题尝试了命令 dhclient / dhclient ens33 / ifoncif ens33 up 等等都无效使用 ifconfig 也能看到网卡 ens33 和mac地址，重启n次也无效以为是路由器之前绑定过静态mac，重新生成mac还是无效折腾了半天，最后竟然发现是这样的原因需要为虚拟机指定网卡硬件
海外服务器一条命令安装sudo apt-get update && \ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \ sudo apt-get update && \ sudo apt-get install -y docker-ce docker-ce-cli containerd.io && \ sudo systemctl start dockerubuntu下自带了docker的库，不需要添加新的源。但是ubuntu自带的docker版本太低，需要先卸载旧的再安装新的。1.卸载旧版本sudo apt-get remove docker docker-engine docker.io containerd runc2.安装前提依赖sudo apt update && sudo apt-get install ca-certificates curl gnupg lsb-release3.安装GPG证书sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -4.写入软件源信息sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"非大陆执行：sudo add-apt-repository "deb [arch=amd64] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"5.安装新版本sudo apt-get install docker-ce docker-ce-cli containerd.io6.配置用户组一行命令添加docker用户组sudo usermod -a -G docker $USER && newgrp docker添加docker用户组sudo groupadd docker为了避免每次命令都要输入sudo，可以设置当前用户到docker用户组，注销重新登录生效sudo gpasswd -a $USER docker或者sudo usermod -a -G docker $USER然后更新docker用户组newgrp docker7.启动dockersudo systemctl start docker8.docker换源修改 /etc/docker/daemon.json (如果该文件不存在，则创建){ "registry-mirrors": [ "https://hub-mirror.c.163.com" ] }安装必要的一些系统工具apt-get -y install apt-transport-https ca-certificates curl software-properties-common添加 docker 配置 /etc/docker/daemon.json{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "registry-mirrors": ["docker镜像仓库国内加速"] }重启 dockerservice docker restart
ssh-keygen 选项： -b：指定密钥长度； -e：读取openssh的私钥或者公钥文件； -C：添加注释； -f：指定用来保存密钥的文件名； -i：读取未加密的ssh-v2兼容的私钥/公钥文件，然后在标准输出设备上显示openssh兼容的私钥/公钥； -l：显示公钥文件的指纹数据； -N：提供一个新密语； -P：提供（旧）密语； -q：静默模式； -t：指定要创建的密钥类型。生成ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa 注册公钥cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys或者直接改名authorized_keysmv id_rsa.pub authorized_keys赋权chmod 600 ~/.ssh/authorized_keys复制到远程主机ssh-copy-id -i ~/.ssh/id_rsa.pub sati2@192.168.8.174测试远程主机是否开启PubkeyAuthenticationgrep PubkeyAuthentication /etc/ssh/sshd_config设置目录权限chmod 700 .sshchmod 600 authorized_keys问题每次输入ssh命令后，虽然可以连接上目标服务器，但是往往要等待很久，这是因为ssh默认开启了地址反解析 将每个linux上/etc/ssh/sshd_config文件中修改或加入UseDNS=no，在server上/etc/ssh/sshd_config文件中修改GSSAPIAuthentication no 重启服务 PasswordAuthentication yes/on ----------------------> 开启或者关闭密码连接 PermitRootLogin yes/no ----------------------------->允许超级用户登录 AllowUsers student----------------------------->只允许登录的用户 DenyUsers student-------------------------->不允许登录的用户报错：WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that the RSA host key has just been changed.The fingerprint for the RSA key sent by the remote host is36:68:a6:e6:43:34:6b:82:d7:f4:df:1f:c2:e7:37:cc.Please contact your system administrator.Add correct host key in /u/xlian008/.ssh/known_hosts to get rid of this message.Offending key in /u/xlian008/.ssh/known_hosts:2RSA host key for 135.1.35.130 has changed and you have requested strict checking.Host key verification failed.原因：ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时，OpenSSH会核对公钥。如果公钥不同，OpenSSH会发出警告，避免你受到DNS Hijack之类的*。处理1：删除~/.ssh/known_hosts 内相关IP的rsa信息处理2：使用命令清除所连接的IPssh-keygen -R XX.XX.XX.XX其中，XX.XX.XX.XX为之前连接时的网段IP重新连接
本文针对PCIE relatek 2.5G Ethernet LINUX driver r8125 for kernel up to 5.6一、用安卓手机共享网络（以OPPO智能机系统为例）1.用数据线连接手机2.打开 设置 -> 连接与共享 -> USB共享网络 二、在ubuntu主机上查找新网络接口通过命令查看当前网卡设备sudo lshw -C network此时可以看到两个设备 *-network DISABLED description: Ethernet interface product: RTL8125 2.5GbE Controller vendor: Realtek Semiconductor Co., Ltd. physical id: 0 bus info: pci@0000:01:00.0 logical name: enp1s0 version: 04 serial: d8:bb:c1:17:ba:67 size: 1Gbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress msix vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=r8125 driverversion=9.008.00-NAPI duplex=full ip=179.160.6.111 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s resources: irq:19 ioport:3000(size=256) memory:a2200000-a220ffff memory:a2210000-a2213fff *-network DISABLED description: Ethernet interface physical id: 2 bus info: usb@1:5 logical name: usb0 serial: 76:7e:24:83:87:cd capabilities: ethernet physical configuration: broadcast=yes driver=rndis_host driverversion=22-Aug-2005 firmware=RNDIS device link=no multicast=yes为网络接口分配IPdhclient usb0ip address可以看到已经有ip地址，并且ping www.baidu.com已经可以联网三、下载驱动安装包1.去 realtek官方驱动下载 下载得到驱动包 r8125-9.008.00.tar.bz2 搭建跟手机同一个网络的下载服务，以下为nginx搭建的本地网络下载服务配置client_max_body_size 8192m; proxy_max_temp_file_size 8192m; location /software { alias /allroot/download; autoindex on; # 显示目录 autoindex_exact_size on;# 显示文件大小 autoindex_localtime on;# 显示文件时间 charset gbk,utf-8; }2.在ubuntu主机通过命令下载驱动包sudo curl -o drive8125.tar.bz2 http://192.168.0.1/software/r8125-9.008.00.tar.bz23.解压重命名后的驱动包tar -jxvf drive8125.tar.bz2进入解压目录可以看到可执行文件autorun.sh,Makefile README src执行脚本sudo sh autorun.sh最后执行网络ip分配命令dhclient enp1s0再通过ifconfig或ip address命令，可以看到已经分配ip四、配置自启动脚本vi /etc/rc.local写入#!/bin/bash dhclient exit 0执行命令sudo chmod 755 /etc/rc.local && systemctl enable rc-local && systemctl restart rc-local sudo systemctl status rc-local查看网络状态sudo systemctl status systemd-networkd
添加普通用户adduser testserver passwd xxxx whereis sudoers chmod -v u+w /etc/sudoers vi /etc/sudoers vi /etc/ssh/sshd_config 修改PermitRootLogin 后面的yes 为 no ,而且去掉前面的注释符，退出并保存service sshd restart
1.查找移动设备目录fdisk -l2.挂在操作Ubuntuadd-apt-repository ppa:relan/exfat apt-get update // 只执行这一步也可以 apt-get install exfat-utilsexfat格式mount -t exfat /dev/sda1 /mnt/usbfat32格式mount -t vfat /dev/sda1 /mnt/usbntfs格式mount -t ntfs /dev/hda2 /mnt/c3.卸载umount /mnt/usb4.自动挂载打开 /etc 找到里面的 fstab 文件进行编辑，追加行:/dev/hda6 /mnt/wine vfat codepage=936,iocharset=cp936,defaults,umask=0 0 0/dev/hda5 /mnt/wind vfat codepage=936,iocharset=cp936 0 0umask=0 表示普通用户也有也可以读写5.挂载光驱:mount -t iso9660 /dev/hdc /mnt/cdrom6.文件名中文乱码mount /dev/sda1 /mnt/usb -o codepage=936,iocharset=cp936mount -t vfat /dev/sda1 /mnt/usb -o codepage=936,iocharset=cp936mount -t vfat -o iocharset=cp936,codepage=936 /dev/sda1 /mnt/usb注意： cp936 是指简体中文， cp950 是指繁体中文。