夜间模式
CentOS 7 FAQ
本来一直用的 ArchLinux,不过 Arch 其实不适合作为服务器使用,因为其滚动更新的特性使得服务器不稳定。
CentOS 如何安装最新版本的 GCC 编译器
默认没做任何设置的情况下,yum 安装的 GCC 版本比较陈旧。如果想安装较新的版本,需要如下操作:
GCC 4.9 安装
bash
yum install centos-release-scl -y
yum install devtoolset-3-toolchain -y
scl enable devtoolset-3 bash
gcc -v
yum install centos-release-scl -y
yum install devtoolset-3-toolchain -y
scl enable devtoolset-3 bash
gcc -v
GCC 5.2 安装
bash
yum install centos-release-scl -y
yum install devtoolset-4-toolchain -y
scl enable devtoolset-4 bash
gcc --version
yum install centos-release-scl -y
yum install devtoolset-4-toolchain -y
scl enable devtoolset-4 bash
gcc --version
Centos7 安装完毕后无法联网的解决方法
进入目录:
/etc/sysconfig/network-scripts/
ls 命令查看网卡配置文件名(在 CENTOS7 中网卡名貌似变成了随机数字,所以每台机器的网卡名并不相同)
比如:ifcfg-enoxxxxxx
将最后一行的 ONBOOT=no 改为 ONBOOT=yes, 如图 最后输入:wq 保存并退出,再重启一下 network:
service network restart
如何增加桌面环境
KDE
bash
yum groupinstall "KDE Plasma Workspaces"
yum groupinstall "KDE Plasma Workspaces"
GNOME
bash
yum groupinstall "GNOME Desktop"
yum groupinstall "GNOME Desktop"
启动(基于 systemd)
bash
systemctl get-default
systemctl set-default graphical.target
systemctl get-default
systemctl set-default graphical.target
Yum 和 RPM 常用命令备忘录
yum history
bash
yum history
yum history list <ID>
yum history info <ID>
yum history undo <ID>
yum history redo <ID>
yum history
yum history list <ID>
yum history info <ID>
yum history undo <ID>
yum history redo <ID>
yum update
bash
yum clean all
yum makecache
yum update
yum clean all
yum makecache
yum update
rpm 安装卸载
bash
rpm -ivh *.rpm
rpm -qa
rpm -qa|grep *
rpm -e *
rpm -e * --nodeps
rpm -ivh *.rpm
rpm -qa
rpm -qa|grep *
rpm -e *
rpm -e * --nodeps
如何从 Yum 库下载 rpm 包但不安装
方法一:yum
bash
sudo yum install --downloadonly <package-name>
sudo yum install --downloadonly <package-name>
默认情况下,一个下载的 RPM 包会保存在下面的目录中: /var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages
以上的 [repository]
表示下载包的来源仓库的名称(例如:base、fedora、updates)
如果你想要将一个包下载到一个指定的目录(如 /tmp):
bash
sudo yum install --downloadonly --downloaddir=/tmp <package-name>
sudo yum install --downloadonly --downloaddir=/tmp <package-name>
注意,如果下载的包包含了任何没有满足的依赖关系,yum 将会把所有的依赖关系包下载,但是都不会被安装。 另外一个重要的事情是,在 CentOS/RHEL 6
或更早期的版本中,你需要安装一个单独 yum 插件(名称为 yum-plugin-downloadonly
) 才能使用 --downloadonly
命令选项:
bash
sudo yum install yum-plugin-downloadonly
sudo yum install yum-plugin-downloadonly
如果没有该插件,你会在使用 yum 时得到以下错误:
Command line error: no such option: --downloadonly
方法二:Yumdownloader
另外一个下载 RPM 包的方法就是通过一个专门的包下载工具 --yumdownloader。 这个工具是 yum 工具包(包含了用来进行 yum 包管理的帮助工具套件) 的子集。
bash
sudo yum install yum-utils
sudo yum install yum-utils
下载一个 RPM 包:
bash
sudo yumdownloader <package-name>
sudo yumdownloader <package-name>
下载的包会被保存在当前目录中。你需要使用 root 权限,因为 yumdownloader 会在下载过程中更新包索引文件。与 yum 命令不同的是,任何依赖包不会被下载。
下载 lsof 示例:
bash
sudo yumdownloader lsof --resolve --destdir=/data/mydepot/
sudo yumdownloader lsof --resolve --destdir=/data/mydepot/
--resolve
表示为下载依赖
CentOS Samba 服务器配置
Samba 是 SMB 的一种实现方法,主要用来实现 Linux 系统的文件和打印服务。Linux 用户通过配置使用 Samba 服务器可以实现与 Windows 用户的资源共享。守护进程 smbd 和 nmbd 是 Samba 的核心,在全部时间内运行。nmbd 程序使得通过企图计算机可以浏览 Linux 服务器。
一、安装前准备
1、 使用 Samba 服务器需要防火墙开放以下端口
bash
UDP 137 UDP 138 TCP 139 TCP 445
## 配置防火墙端口
UDP 137 UDP 138 TCP 139 TCP 445
## 配置防火墙端口
bash
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
## 重启防火墙,使规则生效
/etc/rc.d/init.d/iptables restart
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
## 重启防火墙,使规则生效
/etc/rc.d/init.d/iptables restart
2、关闭 CentOS6 系统的 SELinux
bash
vi /etc/selinux/config
## SELINUX=enforcing #注释掉
## SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
## :wq 保存。
## 重启系统
shutdown -r now 或者 init 6
vi /etc/selinux/config
## SELINUX=enforcing #注释掉
## SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
## :wq 保存。
## 重启系统
shutdown -r now 或者 init 6
二、安装 Samba
1 、检查 Samba 服务包是否已安装
bash
rpm -qa | grep samba
samba-3.5.4-68.el6.x86_64
samba-common-3.5.4-68.el6.x86_64
samba-client-3.5.4-68.el6.x86_64
samba4-libs-4.0.0-23.alpha11.el6.x86_64
samba-winbind-clients-3.5.4-68.el6.x86_64
rpm -qa | grep samba
samba-3.5.4-68.el6.x86_64
samba-common-3.5.4-68.el6.x86_64
samba-client-3.5.4-68.el6.x86_64
samba4-libs-4.0.0-23.alpha11.el6.x86_64
samba-winbind-clients-3.5.4-68.el6.x86_64
说明 samba 已经安装,如果没有安装,运行下面命令安装
bash
[root@ www ~] yum install samba
[root@ www ~] yum install samba
2、配置 samba
bash
chkconfig smb on ## 设置 Samba 开机自动启动
service smb start ## 启动 Samba 服务
/etc/init.d/smb restart ## 重启
/etc/init.d/smb stop ## 停止
cp /etc/samba/smb.conf /etc/samba/bak_smb.conf_bak ## 备份
cp /etc/samba/bak_smb.conf_bak /etc/samba/smb.conf ## 恢复
vi /etc/samba/smb.conf
chkconfig smb on ## 设置 Samba 开机自动启动
service smb start ## 启动 Samba 服务
/etc/init.d/smb restart ## 重启
/etc/init.d/smb stop ## 停止
cp /etc/samba/smb.conf /etc/samba/bak_smb.conf_bak ## 备份
cp /etc/samba/bak_smb.conf_bak /etc/samba/smb.conf ## 恢复
vi /etc/samba/smb.conf
bash
[global] ## 找到这一行(全局设置标签),在此行下面添加如下行:
workgroup = WORKGROUP ## 工作组名称改为 Windows 网络所定义的工作组名
server string = Samba Server ## 设置 samba 服务器的主机名称
security = user ## 设置 samba 服务器安全级别为 user,即以账号和口令访问
netbios name = SambaServer ## 设置 Samba 服务器访问别名
#在配置文件的末尾添加以下自定义内容
[SambaServer] ## 在 Windows 网上邻居中看到的共享目录的名字
comment = SambaServer ## 在 Windows 网上邻居中看到的共享目录的备注信息
path = /home/SambaServer ## 共享目录在系统中的位置
public = no ## 不公开目录
writable = yes ## 共享目录可以读写
valid users=SambaServer ## 只允许 SambaServer 用户访问
## 保存配置
[global] ## 找到这一行(全局设置标签),在此行下面添加如下行:
workgroup = WORKGROUP ## 工作组名称改为 Windows 网络所定义的工作组名
server string = Samba Server ## 设置 samba 服务器的主机名称
security = user ## 设置 samba 服务器安全级别为 user,即以账号和口令访问
netbios name = SambaServer ## 设置 Samba 服务器访问别名
#在配置文件的末尾添加以下自定义内容
[SambaServer] ## 在 Windows 网上邻居中看到的共享目录的名字
comment = SambaServer ## 在 Windows 网上邻居中看到的共享目录的备注信息
path = /home/SambaServer ## 共享目录在系统中的位置
public = no ## 不公开目录
writable = yes ## 共享目录可以读写
valid users=SambaServer ## 只允许 SambaServer 用户访问
## 保存配置
3、添加访问 linux 共享目录的账号 SambaServer
用户家目录为 /home/SambaServer, 用户登录终端设为 /bin/false(即使之不能登录系统)
bash
mkdir -p /home/SambaServer #建立 SambaServer 文件夹
cd /home/SambaServer
touch samba.txt #创建测试文件 samba.txt
useradd SambaServer -d /home/SambaServer -s /bin/false
chown SambaServer:SambaServer /home/SambaServer -R
mkdir -p /home/SambaServer #建立 SambaServer 文件夹
cd /home/SambaServer
touch samba.txt #创建测试文件 samba.txt
useradd SambaServer -d /home/SambaServer -s /bin/false
chown SambaServer:SambaServer /home/SambaServer -R
4、将用户 SambaServer 添加入到 Samba 用户数据库,并设置登录共享目录的密码为:123456
bash
smbpasswd -a SambaServer
New SMB password: ## 输入该用户用于登录 Samba 的密码
Retype new SMB password: ## 再次确认输入该密码
Added user SambaServer.
## 备注:这里设置的密码是 SambaServer 用户登录该机的 Samba 共享的密码,非登陆 OS 的密码;
smbpasswd -a SambaServer
New SMB password: ## 输入该用户用于登录 Samba 的密码
Retype new SMB password: ## 再次确认输入该密码
Added user SambaServer.
## 备注:这里设置的密码是 SambaServer 用户登录该机的 Samba 共享的密码,非登陆 OS 的密码;
5、重启 Samba 服务器
bash
/etc/init.d/smb restart
/etc/init.d/smb restart
6、浏览共享信息 在 Windows 客户端输入 \\ip
或者 \\SambaServer
服务器别名
回车之后,会跳出来登录框,输入账号 SambaServer , 密码 123456 , 即可访问共享目录
至此,CentOS 6 linux samba 服务器配置完成。
服务名:smb 配置目录:/etc/sabma/
主配置文件:/etc/sabma/smb.conf
问题: 如果无法访问共享目录的内容,请把防火墙停止;
bash
service iptables stop
service iptables stop
「RPM」Error in PREUN scriptlet … file was supposed to be removed but is not
Sometimes a yum/RPM package would get “stuck” and just won’t go away. Actually usually the package is already gone but yum/rpm fails to update it’s internal DB and still thinks it is there.
The error one usually sees in such cases is something like:
bash
Error in PREUN scriptlet in rpm package stlinux23-sh4_uclibc-which
stlinux23-sh4_uclibc-which-2.16-5.sh4_uclibc was supposed to be removed but is not!
Error in PREUN scriptlet in rpm package stlinux23-sh4_uclibc-which
stlinux23-sh4_uclibc-which-2.16-5.sh4_uclibc was supposed to be removed but is not!
So in my case the package stlinux23-sh4_uclibc-which-2.16-5.sh4_uclibc is causing problems, it will be soemthing different in your case
To fix the problem run:
yum --setopt=tsflags=noscripts remove stlinux23-sh4_uclibc-which.sh4_uclibc
You can add more than one package file to the end of the command.
「Java」org.quartz.SchedulerException: Couldn't get host name!
<https://blog.csdn.net/Lumia10200/article/details/52670231 >
使用 quartz 做集群任务的时候,在本地和测试环境正常,部署上线的时候, 启动异常:org.quartz.SchedulerException: Couldn't get host name!
这个是 org.quartz.simpl.SimpleInstanceIdGenerator 中获取主机名异常了
java
public class SimpleInstanceIdGenerator implements InstanceIdGenerator {
public String generateInstanceId() throws SchedulerException {
try {
return InetAddress.getLocalHost().getHostName() + System.currentTimeMillis();
} catch (Exception e) {
throw new SchedulerException("Couldn't get host name!", e);
}
}
}
public class SimpleInstanceIdGenerator implements InstanceIdGenerator {
public String generateInstanceId() throws SchedulerException {
try {
return InetAddress.getLocalHost().getHostName() + System.currentTimeMillis();
} catch (Exception e) {
throw new SchedulerException("Couldn't get host name!", e);
}
}
}
处理方法:
进入线上环境(centOs6.x):
1, 查看主机名(命令) : hostname
2, 打开 hosts 文件: vi /etc/hosts
查看是否有乱码等异常内容
3, 确保有: 127.0.0.1 后跟上面用 hostname 命令查看到的主机名, 如果没有则加上
如 : hostname -> USER-1234
则: 127.0.0.1 USER-1234
程序正常, 定时任务正常