美文网首页
centos学习和填坑

centos学习和填坑

作者: 吃吃吃吃吃 | 来源:发表于2018-04-23 22:49 被阅读0次

    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(打印网络连接状况)。


    相关文章

      网友评论

          本文标题:centos学习和填坑

          本文链接:https://www.haomeiwen.com/subject/bzbrlftx.html