- history 查看历史命令
!166 执行第166行命令
echo “” > ~/.bash_history 清空历史命令 - 用户、用户组的常用命令
[root@hadoop001 ~]# ll /usr/sbin/user*
[root@hadoop001 ~]# ll /usr/sbin/group*
*模糊匹配
(1)一个用户可以属于多个用户组,但是必须有一个主组
[root@hadoop001 ~]# useradd ruoze 自动创建一个用户组
[root@hadoop001 ~]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze)
gid 主组
groups 所有组
(2)重新创建
重新创建用户:
[root@hadoop001 home]# useradd ruoze
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze)
重新创建组:
[root@hadoop001 home]# groupadd bigdata
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze)
[root@hadoop001 home]# usermod -a -G bigdata ruoze
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=501(ruoze) groups=501(ruoze),502(bigdata)
改变主组:
[root@hadoop001 home]# usermod -g bigdata ruoze
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=502(bigdata) groups=502(bigdata)
[root@hadoop001 home]# usermod -a -G ruoze ruoze
[root@hadoop001 home]# id ruoze
uid=501(ruoze) gid=502(bigdata) groups=502(bigdata),501(ruoze) - 设置密码
passwd 用户名称 - 切用户
[root@hadoop001 ~]# su - ruoze
[ruoze@hadoop001 ~]$ pwd
/home/ruoze
[root@hadoop001 ~]# su ruoze
[ruoze@hadoop001 root]$
-代表切用户后,进到该用户的家目录且执行当前用户的环境变量文件 - 普通用户临时获取root最大权限(生产上不可能给你root)
[root@hadoop001 ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
jepson ALL=(root) NOPASSWD:ALL
[root@hadoop001 ~]# su - jepson
[jepson@hadoop001 ~]$
[jepson@hadoop001 ~]$
[jepson@hadoop001 ~]$ ll /root
ls: cannot open directory /root: Permission denied
[jepson@hadoop001 ~]$ sudo ll /root
sudo: ll: command not found
[jepson@hadoop001 ~]$ sudo ls -l /root
total 56
-rw-------. 1 root root 1383 Jan 17 06:58 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 Jan 19 20:52 d66
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Desktop
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Documents
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Downloads
-rw-r--r--. 1 root root 10033 Jan 17 06:54 install.log.syslog
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Music
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Pictures
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Public
drwxr-xr-x. 6 root root 4096 Jan 19 21:51 ruozedata
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Templates
drwxr-xr-x. 2 root root 4096 Jan 16 23:05 Videos
- 管道符 过滤
[root@hadoop001 ~]# cat /etc/passwd | grep ruoze
管道符:将上一个命令的结果作为下一个命令的输入端;grep表示过滤 - exit 退出
- 进程 + 端口号
(1)ps -ef | grep xxx 查看进程
[root@hadoop001 ~]# ps -ef | grep tail
root 2425 1779 0 20:39 pts/0 00:00:00 tail -f install.log.syslog
root 2433 2267 0 20:40 pts/1 00:00:00 grep tail 当命令执行时,它自己本身也会作为被搜索的结果
[root@hadoop001 ~]# ps -ef | grep tail |grep -v grep 将当前自身的过滤掉 加-v
root 2425 1779 0 20:39 pts/0 00:00:00 tail -f install.log.syslog
第一列root:用户;第二列数字:pid;第三列数字:ppid
(2)netstat -nlp|grep pid 找端口号
ps:不是所有的进程都有端口号
正常流程:pid–>port 通过pid找端口号
[root@hadoop001 ~]# ps -ef | grep ssh
root 1434 1 0 19:49 ? 00:00:00 /usr/sbin/sshd
root 1775 1434 0 19:52 ? 00:00:00 sshd: root@pts/0,pts/1
root 2477 2267 0 20:51 pts/1 00:00:00 grep ssh
[root@hadoop001 ~]# netstat -nlp|grep 1434
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1434/sshd
tcp 0 0 :::22 :::* LISTEN 1434/sshd
非正常流程:netstat -nlp|grep ssh 直接通过grep过滤它的名字查找端口号
[root@hadoop001 ~]# netstat -nlp|grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1434/sshd
tcp 0 0 :::22 :::* LISTEN 1434/sshd
-
当出现链接拒绝错误 Connection refused:
window : 控制面板-程序和功能-启用或关闭windows功能-选中Telnet客户端-安装部署
cmd
ping ip
telnet ip port
linux : 先搜索,看存不存在: which telnet
没有再安装:yum install telnet.x86_64 -
面试题: 老板说去A服务器 login,打开xxx软件的web界面,该怎么做?ip:port
能够登陆A服务器,即表明ip已知
(1)通过ps找到xxx软件的pid:ps -ef|grep xxx
(2)通过pid找到端口号:netstat -nlp|grep pid
(3)看端口号对外可访问的地址是什么,是否能够对外进行访问
0.0.0.0:22
:::22
——代表当前ip能够对外访问 192.168.137.130
127.0.0.1:80
localhost:80
——代表当前本机ip,内部的,只针对内部当前机器访问 -
杀进程
kill -9 pid
kill -9 2470 2661 并行杀
只想杀死包含log字符的所有进程
kill -9 $(pgrep -f log)==kill -9 1187 1307 1758 2470
linux操作: 遇到rm和kill高危命令,需确认再确认 -
搜索
find / -name ‘log’ 全局搜索,从根目录开始,耗时
find ./ -name 当前目录开始。大多数情况下,知道文件或文件夹在某个目录下面,但具体是哪个目录不清楚
(1)知道某个文件的名称是什么
eg:[root@hadoop001 home]# find / -name ‘ruozedata’
/root/ruozedata
(2)不知道文件具体名称时,用模糊匹配
[root@hadoop001 ~]# find ./ -name ‘data’
./.pulse/7f2fb444cfc3cce107dc80c700000018-card-database.tdb
./ruozedata
./.gconf/apps/nautilus/desktop-metadata -
linux 安装软件,一般通过yum安装rpm包
yum search http
yum install -y httpd
yum remove httpd-tools-2.2.15-69.el6.centos.x86_64 -
which
命令都是从环境变量$PATH找
[root@hadoop001 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@hadoop001 ~]# which ls
alias ls=‘ls --color=auto’
/bin/ls
[root@hadoop001 ~]# ls
anaconda-ks.cfg Desktop Downloads Music Public Templates
d66 Documents install.log.syslog Pictures ruozedata Videos
[root@hadoop001 ~]# ll /usr/lib64/qt-3.3/bin/
total 0
[root@hadoop001 ~]# ll /usr/local/sbin/
total 0
[root@hadoop001 ~]# ll /bin/ls
-rwxr-xr-x. 1 root root 117024 Nov 22 2013 /bin/ls
[root@hadoop001 ~]# PATH=""
[root@hadoop001 ~]# echo $PATH
whereis ls 更全面,一般不用 -
man 命令帮助,更详细
yum --help / man yum -
文件夹操作 mkdir rm mv cp cd
文件操作 touch rm mv cp -
vi 文本编辑
养成先备份,再vi的习惯
cp xxx.conf xxx.conf2019
vi xxx.conf
如果遇到问题,可直接将备份文件覆盖回来
cp 1.conf 1.conf.2019
cp 1.conf.2019 1.conf
(1)命令行模式常用快捷键:
dd 删除当前行
dG 删除光标以下的所有行(包含光标行)
ndd 删除光标以下的n行(从光标所在的行开始)
gg 跳转到第一行的第一个字母
G 跳转到最后一行的第一个字母
shift+$ 行尾
(2)生产场景
2.1 文件内容很多,想要清空,重新开始编辑
操作:先跳到第一行第一个字母:gg;然后删除光标以下的所有行:dG
情况还有两种方式:
2.1.1 echo “” > ruoze.log.1 伪清空,还有1个字节
echo ‘’ > ruoze.log.1 伪清空,还有1个字节。shell判断文件是否清空,一般是根据字节大小来判断,这时字节大小不为0,这种方式错了
2.1.2 cat /dev/null > ruoze.log.2 真正清空
2.2 文件内容很多,想要追加写文件
G shift+$ i 朝右箭头按一次 回车 到新的一行
2.3 当一个文本内容非常多,比如系统的log日志,想要快速定位
2.3.1 想要快速定位到error关键词
搜索: 尾行模式输入/error
行号: 尾行模式输入
set nu
set nonu 取消
2.3.2 想要快速定位某个文件
cat jepson.log |grep filesystem
grep filesystem jepson.log
2.3.3 将日志内容上传到window/mac
EditPlus编辑器查看 -
权限
Permission denied 没有权限
[root@hadoop001 ruozedata]# ll
total 96
drwxr-xr-x. 3 root root 4096 Jan 19 20:42 1
drwxr-xr-x. 2 root root 4096 Jan 19 20:44 4
drwxr-xr-x. 2 root root 4096 Jan 19 20:44 5
drwxr-xr-x. 2 root root 4096 Jan 19 20:44 6
-rw-r--r--. 1 root root 10033 Jan 19 20:57 install.log.syslog
-rw-r--r--. 1 root root 10033 Jan 19 20:57 install.log.syslog20190119
-rw-r--r--. 1 root root 49566 Jan 23 21:37 jepson.log
-rw-r--r--. 1 root root 1 Jan 23 21:30 ruoze.log.1
-rw-r--r--. 1 root root 0 Jan 23 21:30 ruoze.log.2
(1)d rwxr-xr-x
第一列第一个字母: d文件夹 -文件 l连接
r: 读 4
w: 写 2
x: 执行 shell脚本 1
-: 0
rwxr-xr-x 755
rwxr–r-- 744
766 rwxrw-rw-
rwxr-xr-x :三组
第一组: rwx 7 代表文件夹或文件所属的用户的权限: 读写执行
第二组: r-x 5 代表文件夹或文件所属的用户组的权限: 读执行
第三组: r-x 5 代表其他组的所有用户对这个文件或文件夹的权限: 读执行
(2)第三列:所属的用户
(3)第四列: 所属的用户组
(4)第五列: 字节(一般是文件)
ll -h 只能查看文件大小
du -sh 6 文件夹大小
du -sh install.log.syslog 文件大小
(5)去权限:
chmod 444 ruoze.log.1 只读文件
sudoers
只读权限也去除:
chmod 044 ruoze.log.1 用户组可读,可以编辑
chmod 004 ruoze.log.1 用户组可读,可以编辑
(6)生产:
一般软件安装mysql数据库,都有自己的所属用户 mysqladmin,用户组 mysqladmin
切换 su - mysqladmin : 当前用户有权限创建、读、写、执行
Linux用户 jepson : 只有读权限
当用户、用户组改为jepson
chown -R jepson:jepson 目录
chmod -R 755 目录
chown jepson:jepson 目录/文件
chmod 755 目录/文件
整套Linux学习过程 ,-R参数的命令只需记住这两个,其他都是小r
(7)赋予一个x权限
./xxx.sh 执行 #!/bin/bash
sh xxx.sh 执行
- 软连接: 快捷键 删除目标路径,原始路径不删除
ln -s 原始路径 目标路径
/xxx/1
/xxx/1.log
1
1.log