centos重启之后wdcp后台管理还在,但其中的网站却打不开,经艰难摸索发现是iptable是把端口拦住了,修改/etc/sysconfig/iptables添加对应端口。
-A INPUT -p tcp -m state --state NEW -m tcp --dport 7777 -j ACCEPT
wordpress中上传10M的MP3出现http错误,原因可能在php、nginx以及wdcp等,我全都设置一遍并重启服务器,解决了端口问题后搞定。
远程连接服务器mysql
除了记得开放3306端口(iptable以及阿里云控制台),还要修改mysql权限,2种方法:
1、改表
update root set host='%' where user='root';
2、授权
grant all privileges on . to 'root'@'%' identified by 'password' with grant option
此时可能出现本地无法登陆,先mysql -u root -p -h [ip地址],然后grant all privileges on . to 'root'@'localhost' identified by 'password' with grant option
从CentOS7开始,CentOS的服务管理工具由SysV改为了systemd,但即使是在CentOS7里,也依然可以使用chkconfig这个原本出现在SysV里的命令。
Systemd的设计目标是,为系统的启动和管理提供一套完整的解决方案。
使用chkconfig --list命令可以列出所有的服务及其在每个级别(run level)下的自启状态。
我们只关心第3级和第5级:第3级表示完整的多用户模式,是标准的运行级,也即我们平常最常用的文字模式;第5级表示图形界面的管理模式。
需要注意的是,在CentOS7中,chkconfig只保留极少量的SysV服务,其它服务请使用systemd进行管理。
使用chkconfig --level 345 network off即可关闭network这个服务在第3/4/5级中的自启
为chkconfig添加/删除管理的服务项
简单例如:
chkconfig --del network
chkconfig --add network
罗列systemd所管理的服务
使用systemctl list-units --all --type=service
这些服务对应的启动脚本文件保存在/usr/lib/systemd/system
systemd的基本概念
systemd把系统的各项资源(包括各个服务、设备等)都看作是unit,unit有许多种类,我们目前关心的是service和target。这里的service并不是什么新概念,因此只解释一下target:target是多个unit的组合,启动一个target也就相当于启动其中包含的所有unit;SysV中的run level在systemd里被target所取代,例如系统以多用户文字模式(runlevel 3)启动时,就会启动multi-user.target,而以图形界面模式(runlevel 5)启动时,则会启动graphical.target;target之间并非互斥的,因此可以同时启动多个target。
systemctl list-dependencies multi-user.target
列举multi-user.target所包含的内容
systemd常用命令
systemctl enable crond.service // 让某个服务开机自启(.service可以省略)
systemctl disable crond // 不让开机自启
systemctl status crond // 查看服务状态
systemctl start crond // 启动某个服务
systemctl stop crond // 停止某个服务
systemctl restart crond //重启某个服务
systemctl reload * # 重新加载服务配置文件
systemctl is-enabled crond // 查询服务是否开机启动
修改文件的特殊属性
chattr,可修改文件的多种特殊属性:
a,增加该属性后,只能追加不能删除,非root用户不能设定该属性
c,自动压缩该文件,读取时会自动解压;
i,增加后,使文件不能被删除、重命名、设定链接接、写入、新增数据
lsattr,该命令用来读取文件或者目录的特殊权限
find,遍历查找指定目录(不指定就针对整个系统进行查找);该命令支持多种筛选条件(可按与或否的逻辑关系进行串联)进行查找,如:
文件名,通过-name和-iname参数传入,支持通配符。
所属用户,通过-user参数传入。
所属组,通过-group参数传入。
文件时间戳的相关属性,通过-atime(Access time)/-ctime(Change time)/-mtime(Modify time)参数传入,其中-mtime参数比较常用。
文件类型,通过-type参数传入。
文件大小,通过-size参数传入。
查看文件/目录占用磁盘大小
du -sh filename,解释:
-s,表示只列出目录本身的数据。
-h,系统自动调节单位。
如何让后台正在运行的进程转到前台来
对于所有运行的程序,我们可以用jobs –l指令查看,此时记住想要转到前台运行的进程的编号。
我们可以用fg %[number]指令把一个程序调到前台来运行。
kill命令的语法是kill 进程的pid;有时这样并不能终止进程,可以考虑使用kill -9 进程的pid,这会强制终止一个进程。
进程的pid可以通过top命令或ps命令进行查看。
如何创建一个不允许登录的账号(仅供某个后台服务使用)
useradd -M -s /sbin/nologin nologinUser
但需要注意的是:
/sbin/nologin只是不允许系统login,可以使用其他ftp等服务。
如果想彻底一点什么服务都禁止掉,可以使用/bin/false。
为系统设置管理员账号,避免使用root账号造成误操作
非root用户可使用sudo命令来执行本来只能由root用户才能执行的命令。
并非所有的非root用户都可以使用sudo命令,只有在/etc/sudoers里指定的用户才有此能力。
授权使用sudo命令的用户,需要root用户使用visudo命令进行编辑。
为方便起见,可以设置一个“管理员用户组”,先授权这个用户组使用sudo命令,再把管理员用户的账号加入到这个“管理员用户组”中即可。授权用户组的配置如下:%wheel ALL=(ALL) ALL;这个配置便授权给了wheel这个用户组。
vim
翻半页:Ctrl + d(d for down),Ctrl + u(u for up)。
翻一页:Ctrl + f(f for front),Ctrl + b(b for back)。
gg表示移到到首行。
G表示移动到尾行。
nG(n指的是数字)表示移动到第n行;一般用于根据程序错误提示信息进行 bug fix。
0表示移到光标所在行的行首; $表示移动到光标所在行的行尾。
按yy复制光标所在行。
按dd剪切光标所在行,如果光剪切不粘贴,那就相当于删除。
按p将复制/剪切的内容粘贴至光标后,因为光标是在具体字符的位置上,所以实际是在该字符的后面;整行的复制粘贴在游标的下一行。
按v切换到“高亮选择模式”,移动光标进行选择。
在v模式下,按y(y for yank)复制高亮选择的内容。
在v模式下,按d剪切高亮选择的内容,如果光剪切不粘贴,那就相当于删除。
查询是否已安装某个包使用命令rpm -q packagename,如rpm -q zip。另外,我们可以通过rpm -qa的命令来查询系统中所有已安装的包,并通过grep等方式进行二次搜索,如rpm -qa | grep zip。
查询某个已安装的RPM包的详情:rpm -qi packagename,可得到版本号、安装时间、简介等信息。
卸载RPM包使用命令为rpm -e packagename。
登录shell(login shell)指的是需要用户输入用户名和密码才能进去的shell,这是比较常用的。
非登录shell(non-login shell)则相反,不需要用户输入用户名和密码,例如:
直接命令bash(不带--login参数)就是打开一个新的非登录shell。
在图形界面(如Gnome或KDE)中打开一个“终端”(terminal)窗口程序也是属于打开了一个非登录shell。
不同类型shell初始化时所执行的startup脚本不一样
对于Bash来说,登录shell(包括交互式登录shell和使用–-login选项的非交互shell),它会首先读取和执行/etc/profile全局配置文件中的命令,然后依次查找.bash_profile、.bash_login 和 .profile这三个配置文件,读取和执行这三个中的第一个存在且可读的文件中命令。除非被–noprofile选项禁止了。另外,由于.bash_profile一般也会带有执行.bashrc的代码段,因此.bashrc的内容也会被执行。
在非登录shell里,只读取 .bashrc (和 /etc/bash.bashrc、/etc/bashrc )文件,不同的发行版里面可能有所不同。
shell
命令(函数)的结果可以通过反引号来赋值给变量,如
nowDate=`date +"%Y-%m-%d"`
使用read命令可达到与用户交互的目的,它会把用户输入的字符串作为变量值,如:
read -p "please input a number:" x # 执行后等待用户输入并按回车确认
echo "$x"
if [判断语句]; then
command
elif [判断语句]; then
command
else
command
fi
a=10
if [$a -lt 1] || [$a -gt 5]; then
echo ok; # 输出ok
fi
case用法,好难看。。
#!/bin/bash
case $1 in
start|s) ## |表示or,在这里表示匹配start或s均可
echo service is running
;;
stop)
echo service is stoped
;;
reload)
echo service is reload
;;
*)
echo xxxxx
;;
esac
for i in `ls`; do
echo $i is file name!
done
list="rootfs usr data data2"
for i in $list; do
echo $i is appoint
done
function show() {
echo "hello , you are calling the function $1"
}
echo "first time call the function"
show first # 输出hello , you are calling the function first
echo "second time call the function"
show second # 输出hello , you are calling the function second
函数中的关键字“return”可以放到函数体的任意位置,通常用于返回某些值,Shell在执行到return之后,就停止往下执行,返回到主程序的调用行,return的返回值只能是0~256之间的一个整数,返回值将保存到变量“$?”中。
#!/bin/bash
function test() {
return 0
}
test
echo "$?" # 输出0
find /tmp -name ".log" -type f -print | xargs /bin/rm -f
这是xargs命令的常用场景,配合find命令,找到/tmp目录下所有日志文件并予以删除。
对于大数据量的操作来说,如上面的例子,一次性删除大量文件,若直接使用rm -f /tmp/.log,很可能会报错/bin/rm Argument list too long,而如果我们用上xargs命令,xargs会帮我们把待删的文件分批交给rm命令来执行。
这个命令不错
ls | xargs ls
执行env可以查看系统的环境变量,如主机的名称、当前用户的SHELL类型、当前用户的家目录、当前系统所使用的语言等。
执行set可以看到系统当前所有的变量,其中包括了:
系统的所有预设变量,这其中既包括了env所显示的环境变量,也包含了其它许多预设变量。
用户自定义的变量。
w命令可以查看当前系统整体上的负载
如果需要一次性打印系统资源的使用情况,可以使用top - bn1
使用sar命令查看网卡流量历史记录
使用sar命令前可能需要先进行安装:yum install -y sysstat。
使用方法是:sar -n DEV,第一次使用时会报错,因为还没有生成相应的数据记录。打印出来的结果里有很多字段,我们关注rxpck/s和rxkB/s。
rxpck/s表示网卡每秒收取的包的数量,如果数值大于4000则考虑是被攻击了。
rxkB/s表示网卡每秒收取的数据量(单位为KB)。
使用nload命令监控网卡实时流量
使用nload前需进行安装:yum install -y epel-release;yum install -y nload。
使用起来也很简单,直接使用nload命令则可动态显示当前的网卡流入/流出的流量。
ps命令也是用来查看系统具体进程占用资源的情况;由于top命令本身是动态的,而ps命令是非动态的(相当于执行命令时的一个快照),因此ps命令的功能实际上更接近于top -bn1
netstat -lnp(打印当前系统启动哪些端口)和netstat -an(打印网络连接状况)。