美文网首页
linux基本操作

linux基本操作

作者: 清水秋香 | 来源:发表于2020-05-08 22:20 被阅读0次

    列出全部文件详细信息(包含隐藏文件)

    ls -al  
    

    每一级目录下有什么全部显示出来

    ls -R 
    
    ls * 所有文件
    
    ls a??? 以a开头后面还有三个字符的东东
    
    [abc]* 文件名以abc开头的文件
    

    查看安装包

    uname -r
    

    系统磁盘分区情况

    df -h
    

    创建空文件

    touch xx.txt
    

    创建文件夹

    mkdir
    

    空目录删除

    rmdir
    

    多级目录创建

    mkdir -p ad/ss/ss
    

    一层一层的删除,并且不需要问我是否删除

    rm -rf  11
    

    返回家目录

    cd
    

    返回上一次目录

    cd -
    

    查看文本文件内容
    一次查询所有内容

    cat 11.txt
    

    less 分页输出

    less 11.txt
    k-向上一行
    j-向下一行
    

    看文件前10行 -5 指定5行

    head 11.txt
    

    从文件尾部查看文件 -f 实时读log的情况,动态刷新,监控文件

    tail -f
    

    cp拷贝

    cp 
    

    拷贝目录

    cp -r
    

    拷贝(用于备份)时间内容完全一致

    cp -p 11.txt 22.txtr
    

    mv 移动文件,改名(同级目录下)

    mv 11.txt tools/
    mv 11.txt 22.txt
    

    which命令是查找某个命令的完整路径,也就是说他是用来查找可执行文件的,which命令的原理是在当前登陆用户的path环境变量记录的路径中查找。

    which ps
    

    whereis 命令是用来快速查找程序的二进制文件、源代码文件和man手册文件的路径。

    whereis ps 
    

    find命令在指定目录及其子目录下查找符合条件的特定文件。当我们忘了文件位置,可以使用该命令
    find 目录名 条件 如不写路径默认为当前目录下查找
    目录名起始点
    条件用双引号印起来,变量取值的时候用双引号,单引号就是原样输出,特殊字符转译不过来
    --name 后面接要查的关键字
    --type x 以文件类型作为查询条件。文件类型x如下:
    d --- 目录(directory),f---文件(file)

    sudo find / -name "passwd"
    sudo find /etc -name "passwd"
    find -name seq.log
    find /etc -name 'pass*'
    
    find /etc -name 'pass*' -type f
    

    grep命令一种强大的文本搜索工具,并把匹配的行打印出来
    什么时候用?
    查看日志
    查看命令输出
    在 /var/log/messages文件内查找root,把包含root的所有行都显示出来
    大小写敏感 grep支持正则表达式
    -i 不区分大小写

    grep "root"  /var/log/messages
    grep -i "root"  /var/log/messages
    多个install文件中查找
    grep  'test'  install*
    罗列多个文件
    grep 'test'  aa  bb  cc
    目录中递归搜索
    
    grep 'root' -r /var/log
    grep '^test' /car/log/scp.log
    grep 'test$' /car/log/scp.log
    
    反选
    grep -v 'a$' -r /var/log/
    取消正则匹配
    grep -F 'a$' -r /var/log/
    显示匹配行号
    grep -n 'a' /var/log/*.log
    

    find目录下找文件,grep文件里面找内容

    vim
    查找version
    n 向下查找
    N向上查找

    esc /version
    

    另存为

    esc :w filename
    

    显示行号

    set nu
    set nonu
    

    字符替换

    s代表替换
    string文件中已经存在的字符串
    replace替换成的字符串
    g表示每行全部替换
    1,$s/string/replace/g
    %s/string/replace/g
    1,3/string/replace/g
    

    重定向

    >> 重定向追加
    >  重定向覆盖
    
    标准输出重定向到a.txt
    find /etc -name 'password' 2> a.txt
    标准错误重定向到a.txt
    find /etc -name 'password' 2> a.txt
    标准输出,标准错误都写到文件中
    find /etc -name 'password' > a.txt 2>&1
    

    监控tail.log 从定向到bug.log

    tail -f tail.log  >> bug.log
    

    查看进程

    ps -ef | grep 'p' > e.txt
    -v反选将grep去掉
    ps -ef | grep 'gapp' | grep -v 'grep'
    

    配置文件
    如何设置环境变量:命令方式、配置文件

    (/etc/profile,etc/bashec,~/.bash_profile,~/.bashrc)
    

    etc 下面的配置文件是全局,所有用户都生效
    ~ /.bash_profile,~/.bashrc 只针对当前家目录下的用户 sq用户修改了root不会受到,root用户修改了sq不受影响
    查看环境变量

    env
    

    环境变量PATH,决定了shell搜索的路径
    输出PATH变量值

    echo $PATH
    

    命令行添加path

    $PATH相当于把原来命令行里面的值取出来
    /home/wgz/hello 需要加入path的路径,加入后在任何位置可直接找到下面的文件
     export PATH=$PATH:/home/wgz/hello
    

    创建用户

    添加
    adduser hack
    cat /etc/passwd
    hack:x:1001:1001::/home/hack:/bin/sh
    删除
    userdel -r hack
    修改
    usermod -s /bin/bash ftpuser
    

    查询当前在线的用户

    who
    

    用户身份查询

    whoami
    

    查询用户所属组

    groups
    

    显示当前用户信息

    id
    

    切换用户

    将.bash-profile一并带过去
    su - wgz    
    su wgz
    

    文件权限
    rwx
    r读的权限
    w写的权限
    x执行的权限

    d 文件的类型
    第一组rwx   拥有者拥有的权限
    第二组rwx   组中的用户没有写的权限
    第三组rwx   其他所有用户没有写的权限
    drwxr-xr-x 2 wgz wgz    4096 5月   7 13:36 hello
    

    chmod 命令 创建者才有权修改
    谁可以改变文件访问权限?Root和Ownner
    chmod[who][op][permission] file...
    例如:chmod u+x file
    who项表示用户类型,他的内容为以下一项或多项
    u 拥有者(user---owner)
    g 与拥有者同一组的用户(group)
    o 其他人(other)
    a 所有人(all)
    在原有属性上增加或者减少

    chmod u-x,g-wx,o-rwx seq.log
    chmod u+x,g+wx,o+rwx seq.log
    

    覆盖式

    chmod u=rwx,g=rwx,o=rwx seq.log
    
    ---     0
    --x     1
    -w-    2
    r--     4
    -wx   3
    r-x     5
    rw-    6
    rwx    7
    

    755 拥有者有读写执行权限,其余人可执行
    644 拥有者有写的权限,其余只能读
    777 所有人拥有读写执行权限

    chmod 000 1.txt   ---------
    chmod 755 a.txt
    chmod 777 a.txt
    

    修改文件拥有者,所属组

    chown jack info/
    chown -R haha:haha a.txt
    

    修改文件所属组

    chgrp jack test.txt
    

    ps 命令查看进程
    不带任何参数,表示同一个用户同一个终端
    -ef参数
    e表示所有,f表示full-format,尤其是PPID和command内容 ,全格式内容
    PPID 父进程
    axu参数
    ax 表示所有,u表示用户
    经常和管道符合用 |

    ps -ef | grep 'python'
    

    前台进程一般适合运行比较短,与用户交互的进程
    大文件需要长时间运行的,我们会选择后台进程,后台进程会把整个窗口释放出来。
    查看后台进程

    jobs
    

    后台进程变为前台进程

    jobs 查看序号
    fg 加序号        转为前台进程
    fg 1
    
    ctrl + c结束前台任务
    
    ctrl + z挂起前台任务
    在后台进行挂起
    fg 1 拉起在前台执行
    
    bg 1 将后台挂起任务运行起来
    

    终止进程
    手动终止

    kill pid   信号量是15 有的程序会屏蔽掉15的信号,无法杀死
    kill -9 pid  信号量是9 程序无法屏蔽
    ctrl + c      在终端直接发送信号量杀死
    

    只能是owner和root才能杀死进程

    定时任务
    linux下面的定时任务
    at和crontab
    区别
    at只能执行一次
    crontab周期性的执行

    at时间格式
    04:00 2019-03-17 2019年3月17号的4点执行
    now + 5minutes 5分钟后执行
    5pm + 3days 三天后的下午5点执行

    at 22:00 today
    echo 'dfs'  > 1.txt
    ctrl+d    跳出任务 ,时间到了会执行任务
    

    at原理:
    生成对用的脚本放在目录/car/spool/at/下面
    atd去检查执行
    查看任务列表 : root用户可以查看所有任务,非root用户只能看自己

    atq
    

    删除定时任务

    atq 查询编号
    atrm 编号  删除定时任务
    

    crontab定时任务


    image.png

    参数以空格分割,不能缺少参数,星期0-7 ,0和7分别代表星期日
    时间间隔实例:
    实例1:每一分钟执行一次command
    命令:

    * * * * *command
    实例2:每小时的第3和第15分钟执行
    命令:
    3,15 * * * * command
    实例3:在上午8点到11点的第三和第十五分钟执行
    命令;
    3,15 8-11 * * * command
    实例4:每晚的21:30执行命令
    命令:30 21 * * * command
    

    tar 命令

    tar -cvf files.tar 123.txt 456.txt 789.txt   打包-文件
    tar -cvf file.tar dirl         打包-目录
    tar -tvf files.tar         查看包内容
    tar -xvf files.tar -C dir l    解开包
    
    c        create 创建一个打包文件
    v        verbose 显示命令执行的信息
    f        file  后面接文件 打包文件的文件名
    t        list  列出打包的内容
    x        extratt  解压
    -C 解压到那个目录下去
    

    f放在最后面

    tar -xvf test.tar -C ./sss/ss/s/s/
    

    gzip压缩

    gzip a.txt c.txt
    

    解压

    gzip -d a.txt.gz
    

    目录会进到目录中进行压缩,会把所有文件进行压缩,目录不会进行压缩

    gzip -r sss
    

    tar gzip 合用 在tar的基础上进行gzip打包,压缩为更小的文件

    tar -zcvf testgz.tar.gz sss c.txt
    

    解压

     tar -zxvf testgz.tar.gz
    
    tar -zcvf data.tar.gz file l dl   打包并压缩
    tar -zcvf data.tar.gz *.doc     打包并压缩
    tar -zxvf pics.tar.gz               解压缩
    tar -ztvf data.tar.gz               查看压缩包内容 
    

    zip命令 可以和win上通用
    压缩一个或多个文件

    zip zipName.zip filel dirl
    

    解压

    unzip zipName.zip file1 dir1
    unzip zipName.zip 解压
    

    linux里安装源码包
    以nginx 为例

    sudo wget http://nginx.org/download/nginx-1.15.2.tar.gz
    

    配置

    ./cofigure
    

    编译 转换成二进制可执行文件

    make
    

    安装

    make install
    

    RPM包安装软件
    安装rpm软件包

    rpm -ivh rpm软件包名
    rpm -ivh xxxx.rpm
    

    i install 安装
    v 详细信息
    h 安装的进度
    删除安装的软件

    rpm -qa | grep unix2dos
    rpm -e unix2dos
    
    wget http://mirrors.163.com/centos/6/os/x86_64/Packages/unix2dos-2.2-35.el6.x86_64.rpm
    rpm -qa | grep unix2dos
    rpm -e unix2dos-2.2-35.el6.i686
    

    sentos
    yum安装
    基于RPM包管理
    能够从指定的服务器自动下载RPM包并且安装
    可以自动处理依赖性关系,并且一次安装所有的依赖软件包
    安装

    yum install mysql-server
    

    卸载

    yum remove    mysql-server
    

    列出已经安装的

    yum list installed 
    

    ubuntu下apt-get安装

    apt-get install xxx
    

    linux 操作系统位数(32位/64位)

    uname -r 
    

    x86_64 64位
    i686 32位

    查看网络接口信息

    ifconfig
    

    显示ipv4地址

    ip -4 add
    

    显示ipv6地址

    ip -6 add
    

    检测网络情况

    ping -c 10 qq.com
    ping qq.com
    

    NETSTAT产看连接端口

    netstat -a    /显示所有连接中的socket
    netstat -t     /显示TCP的连接信息(尤其是状态信息)
    netstat -I     /显示处于listen状态下的socket
    netstat -u    /显示UDP的连接信息
    netstat -n    /显示端口数字而不是协议名
    netstat -p    /显示建立连接的进程信息
    netstat -r     /显示路由信息
    

    显示本地以22端口连接,远端以ip和随机的端口进行连接

    netstat -tan | grep 22
    
    tcp连接的所有的端口,将pid也显示出来
    netstat -tanp
    

    显示网络数据包统计信息

    ifconfig -s
    

    显示每种网络协议的统计信息

    netstat -s
    

    配置ip地址 重启后失效

    sudo ifconfig ens33 192.168.18.152 netmask 255.255.255.0
    

    添加多个ip地址

    sudo ifconfig ens33:1 192.168.18.153 netmask 255.255.255.0
    sudo ifconfig ens33:2 192.168.18.154 netmask 255.255.255.0
    

    修改文件永久生效,配置ip地址


    image.png

    系统启动的时候就是可用的

    ONBOOT  
    

    是否生效,yes不用执行service network restart

    NM_CONTROLLED=no  
    

    DNS也在这里配置,dns 不配置ping域名无法解析

    DNS1= 8.8.8.8
    

    重启

    
    
    

    做之前先做备份

    cp -p ifcfg-eth0 backup-ifcfg-eth0.backup
    

    查看端口占用

    lsof命令
    查看打开指定文件的进程信息

    lsof testopen
    

    查看进程打开的文件

    lsof -p 2915
    

    确定端口号是否被占用

    lsof -i :9999
    

    ssh连接

    ssh root@192.168.13.3
    

    linux主机之间拷贝文件(有方向,从前往后拷贝)
    单个文件到远端设备

    scp this.txt wgz@192.168.13.1:/home/wgz
    

    多个文件到远端设备

    scp this1.txt this2.txt wgz@192.168.13.2:/home/wgz 
    

    拷贝目录到远端设备
    -r 文件夹

    scp -r dir l wgz@192.168.13.2:/home/wgz
    

    从远端设备拷贝文件或目录到本地
    将远端的/home/wgz/that.txt文件 拷贝到/home/wgz/adc 本地

    scp wgz@192.168.13.2:/home/wgz/that.txt /home/wgz/adc 
    

    拷贝远端文件夹到当前目录

     scp -r wgz@172.20.10.3:/tmp/logs .
    

    拷贝时注意权限
    sentor os
    查看已经开放的端口

    firewall-cmd --list-ports
    

    开启端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    命令含义:

    –zone #作用域

    –add-port=80/tcp #添加端口,格式为:端口/通讯协议

    --permanent #永久生效,没有此参数重启后失效

    ubuntu
    防火墙
    清除防火墙规则

    iptables -F
    

    开启防火墙

    sudo ufw enable
    

    关闭防火墙

    sudo ufw disable
    

    添加22端口

    sudo ufw allow 22
    

    关闭端口

    sudo ufw deny 22
    

    查看端口状态

    sudo ufw status
    

    相关文章

      网友评论

          本文标题:linux基本操作

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