zoukankan      html  css  js  c++  java
  • 大数据学习之linux(2)

    1.history 查看历史命令
    [root@hadoop001 ~]# history
    2 cat jepson.log |grep ruoze
    3 cat jepson.log |grep "ruoze"
    4 echo "www.ruodata.com">>jepson.log 
    5 cat jepson.log |grep "ruoze"
    6 cat jepson.log |grep "ruo"
    7 cat jepson.log |grep ruo
    8 grep --help
    9 passwd
    10 id ruoze
    11 id root
    12 cat /etc/passwd |grep ruoze
    13 cat /etc/passwd
    14 cat /etc/passwd |grep tmp
    15 cd /home/ruoze
    16 cd home 
    17 cd /home 
    18 ll
    19 mkdir ruoze
    
    要执行其中一个历史命令就 用!加上前面的序号
    演示执行 !18 就相当于执行了ll命令
    [root@hadoop001 ~]# !18
    ll
    total 112
    drwxr-xr-x 3 root root 4096 Jan 20 17:35 1
    dr-xr-xr-- 2 root root 4096 Dec 13 09:27 anaconda-ks.cfg
    dr-xr-xr-- 2 root root 4096 Dec 13 09:29 Desktop
    dr-xr-xr-- 2 root root 4096 Dec 13 09:29 Documents
    drwxr-xr-x 2 root root 4096 Dec 17 14:39 doudou
    dr-xr-xr-- 2 root root 4096 Dec 13 09:29 Downloads
    -r-xr-xr-- 1 root root 268 Dec 21 13:58 install.log
    -r-xr-xr-- 1 root root 0 Dec 13 14:13 install.log.syslog
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Music
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Pictures
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Public
    drwxr-xr-x 8 root root 4096 Jan 20 16:47 ruozedata
    -rw-r--r-- 1 root root 304 Dec 27 15:53 ruoze.tar.gz
    -rw-r--r-- 1 root root 1192 Dec 27 15:33 ruoze.zip
    -rw-r--r-- 1 root root 37 Dec 21 09:28 rzdd
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Templates
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Videos
    -rw-r--r-- 1 root root 46045 Dec 10 10:33 业务处_外汇数据采集系统报送规则修改.docx
    [root@hadoop001 ~]#
    
    还可以去 ~/.bash_history 里查看历史命令
    如果自己操作了什么命令不想让别人知道 我们可以清空 ~/.bash_history
    执行命令
    echo ""> ~/.bash_history
    
    [root@hadoop001 ~]# echo ""> ~/.bash_history
    [root@hadoop001 ~]# cat ~/.bash_history
    
    [root@hadoop001 ~]# 
    执行echo ""> ~/.bash_history后,.bash_history空了,但是
    [root@hadoop001 ~]# ll -h ~/.bash_history
    -r-xr-xr-- 1 root root 1 Jan 21 20:35 /root/.bash_history
    可以看到文件大小并不为0 而是1 也就是说还有一个换行符
    要想文件大小为零可执行vi ~/.bash_history
    dd 删除命令
    按esc :wq 保存退出命令(如果碰见说 Warning: Changing a readonly file
    那么在保存的时候就用wq! 加一个感叹号)
    
    [root@hadoop001 ~]# ll -h ~/.bash_history
    -r-xr-xr-- 1 root root 0 Jan 21 21:05 /root/.bash_history
    
    
    如果是在生产上登录堡垒机进行的 删除也没有用 堡垒机会记录一份
    

      

    2.用户,用户组的常用命令
    [root@hadoop001 ~]# ll /usr/sbin//user*
    -rwxr-x---. 1 root root 118192 Nov 6 2016 /usr/sbin//useradd 增加用户
    -rwxr-x---. 1 root root 80360 Nov 6 2016 /usr/sbin//userdel
    -rwxr-x---. 1 root root 113840 Nov 6 2016 /usr/sbin//usermod
    -rwsr-xr-x. 1 root root 11288 Aug 4 2017 /usr/sbin//usernetctl
    [root@hadoop001 ~]# ll /usr/sbin//group*
    -rwxr-x---. 1 root root 65480 Nov 6 2016 /usr/sbin//groupadd 增加组
    -rwxr-x---. 1 root root 57016 Nov 6 2016 /usr/sbin//groupdel
    -rwxr-x---. 1 root root 57064 Nov 6 2016 /usr/sbin//groupmems
    -rwxr-x---. 1 root root 76424 Nov 6 2016 /usr/sbin//groupmod
    [root@hadoop001 ~]#
    
    ##一个用户可以有多个用户组但是必须有一个主组
    [root@hadoop001 ~]# useradd xuziyu
    自动创建一个用户组
    [root@hadoop001 ~]# id ruoze
    uid=1000(ruoze) gid=1000(ruoze) groups=1000(ruoze)
    gid 主组
    groups 所有组
    
    新建用户以后会自动创建家目录
    [root@hadoop001 ~]# ll /home
    total 16
    drwxrwxrwx 3 root root 4096 Dec 17 14:39 jepson
    drwxr-xr-x 2 root root 4096 Dec 13 10:21 ruoze
    drwxrwxrwx 2 root root 4096 Dec 17 15:48 rz
    drwx------ 2 xuziyu xuziyu 4096 Jan 21 20:46 xuziyu
    [root@hadoop001 ~]#
    
    [root@hadoop001 ~]# cat /etc/passwd
    查看passwd文件 可以在最后一行看到最新创建用户的信息
    (passwd是用户配置文件中的一个,记录了所有用户的信息,
    初学者记住就好,以后会慢慢理解)
    
    [root@hadoop001 ~]# cat /etc/group
    查看group可以在文件的最后一行看到新建用户的组的信息
    xuziyu:x:1003:
    第一个 组名,第三个,组ID
    [root@hadoop001 ~]# userdel xuziyu
    userdel 删除用户的命令 删除用户以后passwd文件中记录也就没了
    group文件中的记录也没了(原因 因为xuziyu该组只有xuizyu一个用户
    用户被删除,组校验就他自己,所以也被删除了,但是家目录还在)
    [root@hadoop001 ~]# ll /home
    total 16
    drwxrwxrwx 3 root root 4096 Dec 17 14:39 jepson
    drwxr-xr-x 2 root root 4096 Dec 13 10:21 ruoze
    drwxrwxrwx 2 root root 4096 Dec 17 15:48 rz
    drwx------ 2 1003 1003 4096 Jan 21 20:46 xuziyu
    [root@hadoop001 ~]#
    
    重新创建xuziyu用户
    [root@hadoop001 ~]# useradd xuziyu
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.
    Creating mailbox file: File exists
    [root@hadoop001 ~]# 
    警告会提示:家目录已经存在,不需要再从skel目录下复制文件过来
    
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1003(xuziyu) groups=1003(xuziyu)
    id xuziyu 查看用户的用户组
    
    组
    groupadd bigdata 新增组bigdata
    
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1003(xuziyu) groups=1003(xuziyu)
    [root@hadoop001 ~]# usermod -a -G bigdata xuziyu
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1003(xuziyu) groups=1003(xuziyu),1004(bigdata)
    [root@hadoop001 ~]#
    
    usermod -a -G bigdata xuziyu
    给用户xuziyu添加新的组bigdata 不要问 -a -G啥意思 自己看命令帮助 
    看不懂就记住 反正我没看懂
    
    命令 usermod -g bigdata xuziyu 
    给用户xuziyu更换主组为bigdata
    
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1003(xuziyu) groups=1003(xuziyu),1004(bigdata)
    [root@hadoop001 ~]# usermod -g bigdata xuziyu
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1004(bigdata) groups=1004(bigdata)
    [root@hadoop001 ~]#
    
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1004(bigdata) groups=1004(bigdata)
    [root@hadoop001 ~]# usermod -a -G xuziyu xuziyu
    [root@hadoop001 ~]# id xuziyu
    uid=1003(xuziyu) gid=1004(bigdata) groups=1004(bigdata),1003(xuziyu)
    
    usermod -g bigdata xuziyu 
    usermod -a -G xuziyu xuziyu
    这两个命令下来实现的结果就是
    uid=1003(xuziyu) gid=1003(xuziyu) groups=1003(xuziyu),1004(bigdata)
    uid=1003(xuziyu) gid=1004(bigdata) groups=1004(bigdata),1003(xuziyu)
    
    将用户xuziyu的主组给更换了
    

      

    3 设置密码
    passwd xuziyu
    4.切用户
    [root@hadoop001 ~]# su - xuziyu(注意-前后空格 一定要空格)
    在3中 我们给xuziyu用户设置了密码,
    但是在root用户下切到某个用户是不需要输入密码的
    
    如果是其他用户下切入到xuziyu用户下是需要输入密码的
    
    [root@hadoop001 ~]# su - ruoze
    Last login: Mon Jan 21 21:57:46 CST 2019 on pts/0
    [ruoze@hadoop001 ~]$ su - xuziyu
    Password: 
    Last login: Mon Jan 21 21:58:36 CST 2019 on pts/0
    Last failed login: Mon Jan 21 22:02:33 CST 2019 on pts/0
    There was 1 failed login attempt since the last successful login.
    [xuziyu@hadoop001 ~]$
    
    从其他用户切换到root用户,需要密码
    
    - 代表切用户以后,进该用户的家目录且执行 环境变量文件
    如果执行的结果,进入jepson,但是还是在root家目录以下
    su jepson
    
    [root@hadoop001 ~]# su jepson
    [jepson@hadoop001 root]$ exit
    exit
    [root@hadoop001 ~]# su - jepson
    Last login: Tue Jan 22 21:12:29 CST 2019 on pts/1
    [jepson@hadoop001 ~]$
    

      

    5.普通临时获取root最大权限
    命令 vi /etc/sudoers
    [root@hadoop001 ~]# vi /etc/sudoers
    在sudoers文件里找到
    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    在这一行的下边加上你想让其获得临时权限的用户配置
    eg
    jepson ALL=(root) NOPASSWD:ALL
    
    最后保存的时候要用:wq!命令,强制保存退出
    
    切换到jepson以后执行ll /root 会出现以下这种乱码的情况
    或者报 Permission denied的错误
    
    d????????? ? ? ? ? ? 1
    d????????? ? ? ? ? ? anaconda-ks.cfg
    
    因为我们已经修改了sudoers文件,
    给了jepson临时权限,所以通过sudo文件来执行这些命令就可以了
    
    sudo ll /root 这样命令就可以正常执行了
    ***(为什么不用sudo ll /root,因为ll命令在这样情况下没有被定义,找不到)
    [jepson@hadoop001 ~]$ sudo ls -l /root
    total 112
    drwxr-xr-x 3 root root 4096 Jan 20 17:35 1
    dr-xr-xr-- 2 root root 4096 Dec 13 09:27 anaconda-ks.cfg
    dr-xr-xr-- 2 root root 4096 Dec 13 09:29 Desktop
    dr-xr-xr-- 2 root root 4096 Dec 13 09:29 Documents
    drwxr-xr-x 2 root root 4096 Dec 17 14:39 doudou
    dr-xr-xr-- 2 root root 4096 Dec 13 09:29 Downloads
    -r-xr-xr-- 1 root root 268 Dec 21 13:58 install.log
    -r-xr-xr-- 1 root root 0 Dec 13 14:13 install.log.syslog
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Music
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Pictures
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Public
    drwxr-xr-x 8 root root 4096 Jan 20 16:47 ruozedata
    -rw-r--r-- 1 root root 304 Dec 27 15:53 ruoze.tar.gz
    -rw-r--r-- 1 root root 1192 Dec 27 15:33 ruoze.zip
    -rw-r--r-- 1 root root 37 Dec 21 09:28 rzdd
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Templates
    dr-xr-xr-- 2 root root 4096 Dec 13 09:31 Videos
    -rw-r--r-- 1 root root 46045 Dec 10 10:33 业务处_外汇数据采集系统报送规则修改.docx
    

      

    6.从root用户切换到其他用户用su
    从其他用户切换到root用户要输入密码
    除了用su 我们还可以用命令exit
    [jepson@hadoop001 ~]$ exit
    logout
    [root@hadoop001 ~]#
    

      

    7.管道符 | 过滤 grep
    
    |后面+grep +要过滤的字段之类的
    
    [root@hadoop001 ~]# ll |grep ruo
    drwxr-xr-x 8 root root 4096 Jan 20 16:47 ruozedata
    -rw-r--r-- 1 root root 304 Dec 27 15:53 ruoze.tar.gz
    -rw-r--r-- 1 root root 1192 Dec 27 15:33 ruoze.zip
    **拓展 ll |grep ‘ruo*’(*表模糊匹配)
    

      

    8.进程+端口号
    ps -ef 这个命令显示目前所有运行的程序
    
    可以结合7学的管道符使用
    另开一个窗口执行tail -f
    然后再在原来的窗口执行ps -ef |grep tail
    [root@hadoop001 ~]# ps -ef |grep tail
    root 7028 7011 0 21:42 pts/3 00:00:00 tail -f
    root 7030 6955 0 21:42 pts/2 00:00:00 grep --color=auto tail
    第二条数据是执行ps -ef |grep tail这个命令本身
    要是不想显示这一条那就再过滤一次
    ps -ef |grep tail |grep -v grep
    
    [root@hadoop001 ~]# ps -ef |grep tail |grep -v grep
    root 7028 7011 0 21:42 pts/3 00:00:00 tail -f
    [root@hadoop001 ~]# 
    这样就只显示tail -f这一条了
    

      

    9.这ps -ef命令的结果 root是用户名 7028是pid 7011 是ppid
    当生产:卡住了,需要主动杀死需要命令
    kill -9 +pid(此处的pid可以并行多个)
    kill -9 +pid 2345 3452 4859
    这个命令执行以后2345 3452 48593个进程就被杀死了
    
    提醒:kill之前一定要看清楚是否是该进程,不要杀错
    **为了避免杀错可以有一个方法避免
    eg:我想杀死所有的log进程
    执行pgrep -f log 把所有的含log的进程的pid都输出了
    [root@hadoop001 ~]# echo $(pgrep -f log)
    470 476 7049 28347
    pgrep -f log命令被引用以后输出就是pid并排的形式了(470 476 7049 28347)
    所以
    kill -9 $(pgrep -f log)
    
    **linux 命令kill和rm是高危命令
    [root@hadoop001 ~]# pgrep -f log
    470
    476
    7049
    28347
    

      

    10.netstat -nlp |grep pid(或者知道名字直接匹配名字netstat -nlp|grep httpd)
    这个命令使根据pid来查看该进程的端口号
    
    [root@hadoop001 ~]# netstat -nlp|grep httpd
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2525/httpd
    
    0.0.0.0:22
    :::22
    
    :::80代表当前的IP对外提供访问 192.168.137.130
    
    127.0.0.1:80 只针对当前机器访问
    或者 localhost:80
    

      

    10 搜索
    生产上搜索XXX软件
    (1)history | grep XXX
    在历史命令里看一下有没有关于这个软件的操作
    (2)ps -ef | grep XXX 看一下有没有正在运行
    (3)find / -name '*log*'搜索全局 根目录 但是耗时
    find ./ -name 在当前目录搜索
    
    *代表模糊匹配
    

      

    11 linux安装软件 rmp
    yum search http
    yum install -y httpd (-y 代表yes)
    
    rmp -qa |grep 看你安装了那些包
    

      

    12 which
    命令都是从$PATH里找
    echo $PATH
    [root@hadoop001 ~]# echo $PATH
    /usr/java/jdk1.8.0_45/bin:/root/ruozedata/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    
    [root@hadoop001 ~]# which ll
    alias ll='ls -l --color=auto'
    /usr/bin/ls
    
    说明ll命令在/usr/bin/ls目录下
    
    [root@hadoop001 ~]# PATH="" 令PATH=""空(=前后没有空格注意)
    [root@hadoop001 ~]# echo $PATH
    
    [root@hadoop001 ~]# ls
    -bash: ls: No such file or directory
    
    [root@hadoop001 ~]# PATH=/usr/java/jdk1.8.0_45/bin:/root/ruozedata/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@hadoop001 ~]# which ls
    alias ls='ls --color=auto'
    /usr/bin/ls
    

     

    13.man 命令帮助
    yum --help
    man yum (比help更详细一些)
    

      

     

  • 相关阅读:
    Jenkins常见的构建触发器
    NTP服务器搭建
    Jenkins钉钉通知
    Jenkins邮件通知
    升级到k8s的17.0出现问题
    推荐K8s的一键安装和一键升级
    Pipeline流水线项目构建
    Jenkins构建Maven项目
    Jenkins构建自由风格的项目
    Codeforces Round #570 (Div. 3 )A
  • 原文地址:https://www.cnblogs.com/xuziyu/p/10301295.html
Copyright © 2011-2022 走看看