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更详细一些)