快速上手-Linux

vim

所有的 Unix Like 系统都会内建 vi 文书编辑器。

1
2
3
4
5
6
# 使用 vim 编辑 /etc/profile 文件。
# 如果文件没有,也可以起到 touch 作用。
$ vi /etc/profile

# 使生效
$ source /etc/profile
vim 涉及 说明
/ 输入字符即可查询。从上往下。输入n 查看下一个匹配项。
? 输入字符即可查询。从下往上。
u 行撤销。
i 切换光标为输入/替换模式,光标将变成竖线/下划线。
Esc 退出当前模式。
Shift + : 进入底线命令模式。此时 q 为退出, w 为保存,! 为强制,可以叠加。
Ctrl + A / Ctrl + E 跳至行头与行尾。

yum

yum ( Yellow dog Updater, Modified)是一个Shell前端软件包管理器,提供RPM包和依赖管理。

使用国内软件源

1
2
# 修改为阿里CentOS软件源
$ sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
1
2
3
# 清理并生成缓存
$ yum clean all
$ yum makecache

使用yum安装软件

使用yum可以快速的在线安装。

1
2
3
4
5
# 检查是否安装
$ rpm -qa| grep vsftpd

# 安装
$ sudo yum -y install vsftpd

rpm

Linux rpm 命令用于管理套件。

rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。

这里演示一下使用rpm安装 JDK离线包。

1
2
3
4
5
6
7
8
# 查看当前 jdk
$ rpm -qa | grep jdk

# 删除查询存在jdk(y)
$ sudo yum remove [详细名称]

# 验证当前 jdk
$ java -version

进入 Oracle官网 ,使用浏览器下载需要软件,完成认证开始下载后,获取相关链接。

1
2
3
4
5
6
7
8
9
10
11
# 下载 Oracle JDK
$ sudo wget [地址]

# 下载文件名如包含认证信息,可重命名
# mv jdk-8u211-linux-x64.rpm?AuthParam=1556707371_2168f57e84a9cc5e21aade3cd2dfaf3c jdk-8u211-linux-x64.rpm

# 解压安装
$ sudo rpm -ivd jdk-8u211-linux-x64.rpm

# 安装位置
$ cd /usr/java/jdk1.8.0_211-amd64
1
2
3
4
5
6
7
8
9
10
11
12
13
# 配置环境变量(文件尾追加内容)
$ sudo vim /etc/profile
============================
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
============================

# 使配置生效
$ source /etc/profile

# 验证
$ java -version

权限管理

这里以 ll 为例,说明一下权限相关。

  • 文件类型 : - 表示文件, d 表示目录, | 表示软链接文件等。
  • 权限位
    • 三位为一组,分别表示 读( r ),写 ( w ),执行( x )权限。
    • 一共三组,分别表示 拥有者的权限( u ),拥有者同组成员的权限( g ),其他用户的权限( o ),三者之和为所有人 ( a )。

sudo

sudo 所执行的指令就好像是 root 亲自执行。

1
2
3
4
5
6
7
8
$ visudo
# 等同 $ vi /etc/sudoers

=========================================
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
user ALL=(ALL) ALL
=========================================

chmod

chmod 提供了两种方式可以修改用户的读写权限。

字母方式[u/g/o/a] [+/-/=] [r/w/x]

  • u/g/o/a 分别表示所有者/所属组/其他人/所有

  • +/-/= 分别表示增加/减少/赋值

  • r/w/x 分别表示读权限/写权限/执行权限

1
2
3
4
5
6
# 单个减权
$ chmod a-x script.sh
# 多个增权
$ chmod g+w,o+x script.sh
# 单个赋权
$ chmod a=rwx script.sh

数字方式 : 用二进制表示 rwx 位,即数字 r--4/w--2/x--1

  • 777 所有权限:所有人有所有权限。

  • 755 执行权限:所有者有所有权限,其他有读/执行权。文件夹默认权限。

  • 644 读写权限:所有者读写权限,其他只读。文件默认权限。

1
2
3
4
5
# 赋予执行权限
$ chmod 755 script.sh

# 目录递归赋权
$ chmod -R 755 tomcat

磁盘管理

ls

ls 命令用于显示指定工作目录下之内容。

文件名或目录名称以 . 开头的视为隐藏。

LS [options] [name] 说明
-a 显示所有文件及目录。
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出。
-F 在列出的文件名称后添加标识符,如:可执行档则加 * , 目录则加 /

llls -l 的简写,可以通过 alias ll 查看别名。

1
2
3
4
5
6
7
8
9
10
$ ll

drwxr-xr-x. 2 user user 4096 May 2 12:55 Desktop
drwxr-xr-x. 2 user user 4096 May 1 16:58 Documents
drwxr-xr-x. 2 user user 4096 May 1 21:16 Downloads
drwxr-xr-x. 2 user user 4096 May 1 16:58 Music
drwxr-xr-x. 2 user user 4096 May 1 16:58 Pictures
drwxr-xr-x. 2 user user 4096 May 1 16:58 Public
drwxr-xr-x. 2 user user 4096 May 1 16:58 Templates
drwxr-xr-x. 2 user user 4096 May 1 16:58 Videos

ls 可以配合 grep 进行模糊查询。

1
2
3
4
5
6
7
$ ls -lF | grep pro

drwxr-xr-x. 2 root root 4096 May 1 16:52 iproute2/
drwxr-xr-x. 2 root root 4096 May 1 16:56 modprobe.d/
-rw-r--r--. 1 root root 2088 May 1 22:33 profile
drwxr-xr-x. 2 root root 4096 May 1 16:54 profile.d/
-rw-r--r--. 1 root root 6455 Jan 12 2010 protocols

cp

cp [option] source... dest 说明
-r 递归复制
1
2
3
4
5
# 拷贝文件
$ cp apache-tomcat-7.0.73.tar.gz tomcat7.tar.gz

# 拷贝文件夹
$ cp -r tomcat7 tomcat

mv

mv 命令用来重命名、移动位置。

默认是强制模式,有覆盖风险。

mv [options] source dest 说明
-f 在mv操作要覆盖某已有的目标文件时不给任何指示。
-i 若指定目录已有同名文件,则先询问是否覆盖旧文件。

rm

rm 命令用于删除一个文件或者目录。

rm [option] name 说明
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
1
2
# 跑路专用命令
$ rm -rf /

du

1
2
3
# 当前目录总大小
$ du -sh
100M .

df

1
2
3
4
5
6
7
# 显示可读的磁盘占用情况 - 用于排查大而无用的文件
$ df -h

Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 1.6M 1.6G 1% /run
/dev/sda2 219G 136G 72G 66%
1
2
3
4
5
6
# 以inode模式来显示磁盘使用情况 - 用于排查小而多的文件
$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 2029942 528 2029414 1% /dev
tmpfs 2037808 897 2036911 1% /run
/dev/sda2 14622720 2668065 11954655 19% /

系统管理

ps

ps 命令用于显示当前进程的状态。

1
2
3
4
5
6
7
# 显示所有包含其他使用者的行程
$ ps aux

# 搜索并打印线程信息
$ ps aux | grep nginx

$ ps -ef | grep nginx
1
2
3
4
USER    PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
gushi 34217 0.7 0.0 4371264 5036 s000 S 3:32PM 0:01.09 -zsh
root 34686 0.0 0.0 4277784 1120 s000 R+ 5:20PM 0:00.00 ps au
...

kill

kill 命令用于退出执行中的程序或工作。

推荐先尝试 kill ,不成功则使用 kill -9

1
2
3
4
5
6
7
8
# 尝试自行退出进程,默认信号15
# $ kill [PID]
# $ kill 15 [PID]
$ kill 123456

# 强制退出进程
# kill -9 [PID]
$ kill -9 123456

top

top命令用于实时显示 process 的动态。

1
2
3
4
5
# 动态打印进程信息,q 退出。
$ top

# 查看进程中的线程
$ top -Hp <PID>

信息输出

cat

cat 命令用于连接文件并打印到标准输出设备上。

cat [options] [fielname] 说明
-n 显示行号,从 1 开始。
1
2
3
4
5
6
$ cat /etc/profile -n

1 # /etc/profile
2
3 # System wide environment and startup programs, for login setup
4 # Functions and aliases go in /etc/bashrc

tail

tail 可以查看文件内容,使用 -f 可以循环读取,即动态打印。

1
2
3
$ tail -f catalina.out

$ tail -100f catalina.out

备份压缩

tar

tar [option] 说明
-c --create 建立新的备份文件。
-x --extract--get 从备份文件中还原文件。
-z --gzip--ungzip 通过gzip指令处理备份文件。
-v --verbose 显示指令执行过程。
-f 使用档案文件或设备,这个选项通常是必选的。
1
2
3
4
# 打包
$ tar -cvf t.tar t
# 提取
$ tar -xvf t.tar
1
2
3
4
# 压缩打包
$ tar -zcvf t.tar.gz t
# 解压并提取
$ tar -zxvf t.tar.gz

其他

1
2
3
4
5
6
7
# 显示当前目录
$ pwd
# 创建空文件
$ touch [filename]
# 创建和移除目录
$ mkdir [dirname]
$ rmdir [dirname]