解决 BlackArch 联网报错:Could not connect to wicd’s D-bus interface. Check the wicd log for error message.

操作环境

虚拟化软件:VirtualBox 5.2.22 r126460 (Qt5.6.2)

物理机操作系统:Windows 10 家庭版 64位

虚拟机操作系统:blackarch-linux-2018.08.01

虚拟机联网方式:桥接

报错产生的过程

启动 BlackArch 之后,右键”network/wicd-gtk”, 如图:

图 1 启动 wicd-gtk
图 1 启动 wicd-gtk

随后出现弹窗提示:

图 2 无法连接到 wicd 的 D-Bus 接口
图 2 无法连接到 wicd 的 D-Bus 接口

上述报错的文字内容即是:

Could not connect to wicd’s D-bus interface. Check the wicd log for error message.

问题解决过程

ip a  命令查看网卡和网络连接情况:

图 3 网卡 enp0s3 未获取到 IP 地址
图 3 网卡 enp0s3 未获取到 IP 地址

运行 dhcpcd enp0s3  命令自动获取 IP 地址:

图 4 自动获取 IP 地址
图 4 自动获取 IP 地址

之后,使用 ip a 命令即可看到系统已经获取到了 IP 地址等网络配置信息:

图 5 成功获取 IP 地址
图 5 成功获取 IP 地址

ping 测试发现可以正常连接互联网:

图 6 ping www.zhaokaifeng.com
图 6 ping www.zhaokaifeng.com

在 VirtualBox 中为 BlackArch Linux 设置共享文件夹

操作环境

虚拟化软件:VirtualBox 5.2.22 r126460 (Qt5.6.2)

物理机操作系统:Windows 10 家庭版 64位

虚拟机操作系统:blackarch-linux-2018.08.01

操作过程

在物理机上新建一个文件夹,打开”设备/共享文件夹”,添加一个共享文件夹并设置为“自动挂载”,如图:

图 1 添加共享文件夹
图 1 添加共享文件夹

之后重启虚拟机系统。

在虚拟机系统的/media/sf_share 目录下可以看到共享文件夹中的内容:

图 2 在虚拟机系统中查看共享文件夹中的文件
图 2 在虚拟机系统中查看共享文件夹中的文件

详解CentOS中定时执行释放内存的Shell脚本及相关原理

本文总体结构:

第一部分:本文中释放系统内存的原理

第二部分:创建用于释放内存的Shell脚本并加入到系统定时任务

第三部分:详细分析Shell脚本中的每一条指令

第四部分:系统定时任务的工作方式

继续阅读“详解CentOS中定时执行释放内存的Shell脚本及相关原理”

解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题

前言:

最近服务器内存使用率一直居高不下,检查之后发现可能和php-fpm进程数过多有关。本文记录了我优化php-fpm配置文件的过程并补充了一些和php-fpm有关的知识。

继续阅读“解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题”

在不重装系统的情况下创建Linux的Swap分区

前言:

本文中使用的CentOS Linux系统在安装的时候没有创建Swap分区。下面介绍的方法是通过创建一个文件的方式在不重装系统(即不格式化整个磁盘)的情况下创建Swap交换分区。

继续阅读“在不重装系统的情况下创建Linux的Swap分区”

解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题

前言:

解决Ubuntu Linux系统下安装VMware Workstation Pro无法弹出图形化安装界面以及安装完成后无法打开虚拟网络编辑器界面的问题。

继续阅读“解决Ubuntu系统下的VMware Workstation无法打开虚拟网络编辑器界面的问题”

Ubuntu物理机中解决VirtualBox虚拟机无法连接USB设备的问题

问题描述:

在安装完VirtualBox的USB控制器扩展(关于在VirtualBox中安装USB控制器扩展的方法可以查看我的这篇文章:http://zhaokaifeng.com/?p=443),并且在设置里打开了“启用USB控制器”的情况下,插入USB设备(如U盘)后,启动虚拟系统,在“设备->USB”里没有找到该USB设备。

解决方法如下:

1 添加Ubuntu当前登陆用户到usbfs用户组:

sudo adduser xxx usbfs

2 添加Ubuntu当前登陆用户到usbfs用户组:

sudo adduser xxx vboxusers

注:系统当前登陆用户即命令提示符中xxx@yyy 中@ 前面的xxx 。也可以使用whoami 查看当前登陆用户的用户名。

3
关闭虚拟系统;
重启Ubuntu物理机;
插入U盘,启动虚拟机,发现可以连接USB设备,问题解决。

CentOS-7修改主机名

方法一(修改静态主机名):

vi /etc/hostname

注:由于静态主机名是系统初始化时从/etc/hostname中读取的,所以修改其中的内容为自己想要的主机名即可实现对静态主机名的修改。

之后reboot以生效。

方法二(修改瞬态主机名):

hostname aaa

注:aaa为新主机名。

查看主机名:

hostname

上述命令查看主机名发现显示的主机名是aaa ,但是命令行提示符前面的主机名并没有改变。此时如果是在纯文本界面,使用Alt+Fn+F3 或Alt+F3 组合键即可以新的主机名(aaa)进行登陆,如果在图形化界面中,直接打开一个新的模拟终端就可以看到新的主机名(aaa)了。

注:reboot后,该方法所做的修改失效。

方法三(使用hostnamectl修改主机名):

hostnamectl是CentOS-7中新增的一个用于修改主机名的指令。在CentOS中有“static静态”、“transient瞬态”和“pretty灵活”三种主机名命名方式(在static和transient形式的主机名中不允许出现特殊字符和空格,而在pretty形式的主机名中则没有这些限制,pretty形式的主机名只是用于展示给终端用户。),使用hostnamectl可以很方便的修改这三种状态的主机名。

同时修改static, transient, pretty三种形式的主机名:

hostnamectl set-hostname aaa

仅修改静态形式主机名:

hostnamectl --static set-hostname aaa

仅修改瞬态形式主机名:

hostnamectl --transient set-hostname aaa

仅修改灵活形式主机名:

hostnamectl --pretty set-hostname aaa

注:使用方法三修改后需reboot以生效。

SSH免密码登录Linux服务器

操作环境:
客户机操作系统:Ubuntu Linux
服务器操作系统:CentOS Linux

免密登陆的原理:
免密登陆其实就是使用密钥文件代替密钥进行身份验证。这里的密钥文件就是公钥和对应的私钥,将公钥部署在远程服务器上,私钥部署在客户机上。在服务器和客户机上配置好密钥文件后,当客户机向服务器发起连接请求的时候,客户机会向服务器表达使用密钥文件进行身份验证的请求并向服务器发送公钥;随后,服务器会在客户机对应用户的主目录下找寻公钥文件并与收到的公钥文件进行对比;如果公钥文件的对比结果一致,服务器会使用公钥加密一个文件发送给客户机;客户机在收到公钥加密的文件后使用自己的私钥进行解密,然后将解密后的内容发送给服务器;如果服务器收到的解密内容与原内容一致则身份验证成功,两台计算机之间成功建立连接。

实现方法:
使用ssh-keygen 生成公钥与私钥,将公钥部署在服务器上,私钥部署在客户机上。

具体实现步骤:
1.生成密钥文件
命令:

ssh-keygen -t rsa -P "password"

之后弹出提示:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/yourname/.ssh/id_rsa):

此时如果不希望改变密钥文件的默认保存路径则直接回车即可。

注0:上述命令中的password是用于加密私钥的密码。为了尽可能保证私钥不被非授权使用,我建议在创建密钥文件时务必设置加密私钥的密码,不可省略。

这时,在/home/yourname/.ssh/id_rsa 目录下就可以看到id_rsa 、id_rsa.pub 和known_hosts 这三个文件。
其中,
id_rsa:私钥文件
id_rsa.pub:公钥文件
know_hosts:已知主机的公钥文件

2.复制公钥至服务器
命令:

scp -p ~/.ssh/id_rsa.pub root@<server ip>:/root/.ssh/authorized_keys

之后会要求输入远程服务器的登陆密码,输入密码后回车即可。

3.登录服务器
命令:

ssh root@<server ip>

回车后会要求输入 本地私钥的解密密码(即第一步中设置的“password”),解密私钥后就可以登录服务器了。

注1:上文路径中出现的“yourname”是指你登陆客户机时使用的用户名。

注2:在部署公钥的时候虽然使用了服务器相应登陆账户(如root账户)的密码,但是之前所生成的公钥与私钥和这个密码并没有联系,输入该密码仅仅是为了登陆远程服务器,将公钥文件部署到服务器上。