linux入门+常用命令 【CentOS7.2-Minimal】
初始 linux
~:家目录
root 用户~规定为 /root
[root@localhost ~]$ pwd
/root
普通用户~默认 /home/username
[liqiang@localhost ~]$ pwd
/home/liqiang
pwd 显示当前光标所在路径
~ 与 / 的区别
~ 代表家目录, 对于root用户来讲就是: /root ,
/ 是根目录。/root 只是 / 下的其中一个子文件夹。
[root@localhost /]# ls
bin dev home root etc usr var
切换路径
去到家目录:
cd
cd ~
去到根目录
## 所有用户同一个根目录
cd /
回退到上一次停留目录
cd -
去到上一层、上两层目录
cd …/
cd …/…/
[cd ./ 是当前目录,相对路径 ]
绝对路径: 以根目录为起始
[root@localhost local]$ cd /usr/local/mysql
相对路径: 以当前目录为起始
[root@localhost local]$ cd mysql
[root@localhost local]$ cd ./mysql
文件
查看当前目录有那些文件/文件夹
ls
ll –> ls -l 的别名,列出文件/文件夹详细信息
ll -a –> ls -l -a 查看包括隐藏文件在内的所有文件/文件夹
ll -h 查看文件大小 【du -sh 可看文件/文件夹大小,小于4k的文件/夹只会显示4.0k】
ll -rt 按时间并排展示,一般 -rt 一起使用
ls --help 更多命令查看命令帮助
mkdir 创建文件夹
单个创建 mkdir a (相对路径创建在当前目录下)
mkdir /xxx/xxx (绝对路径可以往任意路径创建)
级联创建 mkdir -p 1/2/3
并联创建 mkdir a b c
复制和移动文件
cp /xxx/xx ./xxxx [源文件] [目标文件]
mv /xxx/xx xxxx [源文件] [目标文件]
ln -s mysql-5.6.23 mysql [源文件] [快捷方式] ## 代替mv重命名,便于上线后版本变更,存储位置变更
上传、解压文件
# cd 到使用目录 [yum install -y lrzsz]
# rz 从windows资源管理器选中文件上传到linux当前目录 【或使用xftp工具】
# sz filename 将文件下载到windows
# unzip file.zip 解压zip [yum install -y unzip]
# tar -xzvf file.tar.gz 解压tar.gz [yum install -y lrzsz]
# tar –xvf file.tar 解压tar **需要安装工具包**
# unrar e file.rar 解压rar **需要安装工具包**
创建空文件
- touch xxx.xx
- cat /dev/null > xxx.xx
- echo “” > xxx.xx (空字符串并不完全空)
- vi xxx.xx (前提xxx.xx不存在,vi后不编辑,保存退出)
将已有内容的文件清空内容
- cat /dev/null > xxx.xx
- echo “” > xxx.xx (空字符串并不完全空)
- vi gg dG 【gg 第一行;dG删除光标所在及以后行;。。。】
- rm -rf 后再 touch
查看文件的内容
cat 一次全部展示 (小文件)
more 按空格往下翻页,不能往上,按q退出 (大文件)
less 按上下箭头往上下,按q退出 (大文件)
- cat xxx.xx|grep -C 20 ERROR
【过滤出关键字 ERROR 出现的前20行+后20行的内容】
【管道符:第一个命令的输出为第二个命令的输入】
【grep:按关键字过滤 】
【- A 后20行;-B 前20行;-C 前后20行 -after/-before】
- 生成到log文件,再用sz命令 下载到windows来查看(一般在download目录下)
- cat xxx.xx | grep -C 30 ERROR > error.log
【> 新建/覆盖】 【把过滤出来的文件输出到新的文件】
- cat xxx.xx| grep -C 30 ERROR >> error.log
【>> 追加】
- vi 进入文件去搜索
- 实时查看
- tail -200f xxx.xx 实时查看文件最新200行【没有-200F的,一般脚本里用F,自己操作时f】
- tail -F xxx.xx 【F = f + retry,文件消失后会不停尝试重新获取文件】
全局搜索一个文件的名称
find / -name ‘*mysql*’ [*:模糊搜索;/ 根路径:全局会很慢,能确定部分目录就用/xxx 替换/]
环境变量和PATH
全局环境变量:/etc/profile
个人环境变量: (~自己家目录)~/.bashrc
~/.bash_profile
最好配置在 .bashrc。【切换用户 su 不会执行.bash_profile;su - 才会】可能存在其他不会生效情况
修改配置文件后:刷新、执行配置文件 [source 或 .]
(只会在当前会话,其他已经连接的会话也需要source)
source /etc/profile
. .bashrc 【第一个. 与 source同样效果,代表执行】
which java 【检查修改有没有生效】
echo $JAVA_HOME -->能输出 /usr/java/jdk1.8.0_121 是因为在/etc/profile里添加了JAVA_HOME
别名
[root@localhost ~]# alias jk='pwd' ## 当前会话生效 【注意=前后不能有空格】
如果要永久生效需要配置在 /etc/profile 中
vi /etc/profile
添加一句 :alias jdk='echo $JAVA_HOME' 【注意=前后不能有空格】
source /etc/profile
vi 编辑文件的过程
vi xxx.xx 打开进入命令行模式
i 进入编辑模式
esc 进入命令行模式
shift+: 进入尾行模式
wq 保存退出;q退出;q!不保存;wq!强制保存退出
用户
添加用户
[root@localhost ~]# useradd liqiang
[root@localhost ~]# id liqiang
uid=1002(liqiang) gid=1002(liqiang) groups=1002(liqiang)
【 gid:主组; groups:所在的所有用户组】
如果创建用户时,家目录空文件夹提前存在但没有配置文件,会报错:
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
处理办法(把缺少的文件从 [/etc/skel/.*] 复制一份过来)
[root@localhost ~]# cp /etc/skel/.* /home/liqiang/
设置密码
[root@localhost ~]# passwd liqiang
删除用户
[root@localhost ~]# userdel liqiang
【用户组下唯一用户删除时,用户组也会删】
创建用户组
[root@localhost ~]# group -g 101 dba
[root@localhost ~]# useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
将用户 liqiang 添加到另外一个用户组 bigdata
[root@localhost ~]# usermod -a -G bigdata liqiang
[root@localhost ~]# id liqiang
uid=1002(liqiang) gid=1002(liqiang) groups=1002(liang),1003(bigdata)
修改主组【修改gid后groups也只剩主组这一个,需要添加原来的组到groups】
[root@localhost ~]# usermod --gid bigdata liqiang
[root@localhost ~]# id liqiang
uid=1002(liqiang) gid=1003(bigdata) groups=1003(bigdata)
[root@localhost ~]# usermod -a -G liqiang liqiang
uid=1002(liqiang) gid=1003(bigdata) groups=1003(bigdata),1002(liang)
权限
r4 w2 x1
rwxr-xr-x 代表 755
第一组 rwx代表用户的权限 [读、写、执行]
第二组 r-x代表同用户组下其他用户的权限 [读、执行]
第三组 r-x代表其他用户组的权限 [读、执行]
chown -R 用户:用户组 文件夹/文件路径
chmod -R 777 文件夹/文件路径
[root@localhost ~]# chown -R mysqladmin:dba /usr/local/mysql
[root@localhost ~]# chmod -R 755 /usr/loacl/mysql
切换用户
su ruoze 切换到用户,但pwd在切换前的目录(临时)
su - ruoze 切换到该用户的家目录,且执行环境变量文件
.bash_profile su 不会执行;su - 都执行
.bashrc su 执行 ;su - 都执行
普通用户获取root的最大权限 [sudo]
[root@localhost ~]# vi /etc/sudoers
liqiang ALL=(ALL) NOPASSWD:ALL
服务
查看服务,服务的端口号
[root@localhost ~]# ps -ef|grep mysql
[root@localhost ~]# netstat -nlp|grep pid
检查ip / 端口号通不通
ping ip
telnet ip [端口号] 【yum install telnet】
查看系统磁盘,内存的命令
df -h
free -m
查看机器负载
top
历史命令记录 查看/清空
history ; history -c ;
linux的 /tmp 目录超过30天没有访问会自动删除
关于部署服务的任何东西不要配置在/tem下
/tmp 的权限是777,可以放一下需要传送的文件,不用考虑权限问题
安装JDK
mkdir /usr/java
cd /usr/java
rz 从windows上传jdk压缩包 到 /usr/java
unzip jdk1.8___.zip
查看解压后jdk文件夹的权限,如果不是root需要设置为root
chown -R root:root /usr/java/*
配置JAVA_HOME到环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$JAVA_HOME/bin:$PATH
[root@Gargantua java]# source /etc/profile
[root@Gargantua java]# which java
/usr/java/jdk1.8.0_121/bin/java
[root@Gargantua java]# echo $PATH
/usr/java/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
安装完成