大数据学习之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更详细一些)

猜你喜欢

转载自www.cnblogs.com/xuziyu/p/10301295.html
今日推荐