一. linux基础知识
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
1. 发行的 linux 版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS
2. linux 系统目录结构
- /sys: 这是 linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面 3 种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在 内核对象子系统中
- /bin:存放着最常用的程序和指令
- /sbin:只有系统管理员能使用的程序和指令
- /usr/bin:系统用户使用的应用程序与指令。
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:内核源代码默认的放置目录。
- /dev :Device(设备)的缩写, 存放的是 Linux 的外部设备。注意:在 Linux 中访问设备和访问文件的方式是相同的。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
- /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
- /usr:用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。(程序目录)
- /srv:存放服务启动后需要提取的数据(不用服务器就是空)
系统启动必须:boot,etc,lib,sys
指令集合::bin,sbin
外部文件管理: dev, media,mnt,
临时文件: run,lost+found,tmp
账户: root, home,usr,usr/bin,usr/sbin,usr/src
运行过程中要用: var,proc,
扩展用的: opt,srv
3. linux 基础命令
shutdown
shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。shutdown 会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。
shutdown -P now ### 关闭机器
shutdown -H now ### 停止机器
shutdown -r 09:35 ### 在 09:35am 重启机器
shutdown -c ### 要取消即将进行的关机
halt
halt 命令通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。注意在有些情况会它会完全关闭系统。
halt ### 停止机器
halt -p ### 关闭机器
halt --reboot ### 重启机器
poweroff
会发送一个 ACPI 信号来通知系统关机。
reboot
命令 reboot 通知系统重启。
二. Linux 用户/用户组
groupadd
groupadd 选项 用户组 可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g 选项同时使用,表示新用户组的 GID 可以与系统已有用户组的 GID 相同。
groupadd -g 1314 xxy
groupdel
groupdel xxy
groupmod
groupmod 选项 用户组 常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g 选项同时使用,用户组的新 GID 可以与系统已有用户组的 GID 相同。 (不重新指定用户组)
-n 新用户组 将用户组的名字改为新名字(name)
[root@localhost ~]# groupmod -g 1314 -n xxy xxy1
groupmod: group 'xxy1' does not exist(新名称在前面)
[root@localhost ~]# groupmod -g 1314 -n xxy1 xxy
useradd
useradd 选项 用户名 参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m 选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell 文件 指定用户的登录 Shell。
-u 用户号 指定用户的用户号,如果同时有
-o 选项,则可以重复使用其他用户的标识号。 用户名: 指定新账号的登录名。
useradd -d /usr/pig -m pig ##创建用户 pig,其中-d 和-m 选项用来为登录名 pig产生一个主目录/usr/pig。
useradd -s /bin/sh -g group1 -G group2,root pig2 ##新建用户 pig2,登录 Shell 是 /bin/sh,属于 group1,又属于 group2 和 root。
userdel
常用的选项是 -r,它的作用是把用户的主目录一起删除。
usermod
常用的选项包括-c, -d, -m, -g, -G, -s, -u 以及-o 等,这些选项的意义与 useradd 命令中的选项一样,可以为用户指定新的资源值
passwd
passwd -l username ## 锁定用户
passwd -u username ## 解锁用户
passwd -d username ## 使口令无效,删除口令
passwd f username ## 强迫用户下次登录时修改口令
## 如果默认无参,则修改当前用户密码
newgrp
切换用户组
newgrp root ## 这条命令将当前用户切换到 root 用户组,前提条件是 root 用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
与用户账号有关的系统文件
/etc/passwd 文件 : Linux 系统中的每个用户都在/etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
/etc/group 文件: 用户组的所有信息都存放在/etc/group 文件中。
三. 文件与目录
第一个字符:代表这个文件的类型,是目录、文件,还是一个链接等等
[ d ] 目录
[ - ] 文件
[ l ] 链接文档(link file) (硬链接是-)
[ b ] 可供储存的接口设备(可随机存取装置)
[ c ] 串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符:以三个一组分成三组,用 r、w、x 三个参数的组合表示,位置不会改变
[ r ] 代表可读(read)
[ w ] 代表可写(write)
[ x ] 代表可执行(execute)
[ - ] 没有权限
4 2 1
R W X
1 1 1 = 7
1 0 1 = 5
chgrp
更改文件属组
chown
更改文件属主,也可以同时更改文件属组
chmod
更改文件 9 个属性
文件与目录管理命令
cd,ls,pwd,mv,rm,mkdir,rmdir,cp
硬链接与软链接
硬链接是直接链接到文件, 文件标识是-,创建时文件必须存在命令是ln, 软链接是文件的一个快捷方式, 创建时文件可以不存在 命令是ln -s
文件被真正删除的条件是所有的硬链接全部被删除
安装程序 rpm/yum
rpm是redhat的标准安装程序
rpm [参数] rpm 包
-i 安装
-U 更新(很少用)
-e 卸载
-v 显示安装信息
-h 显示安装进度
yum是对rpm的封装
yum [options] [command] [package …]
options**:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。command**:**要进行的操作。
package 操作的对象。
yum常用命令
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
yum 源
官方的 yum 源在国内访问效果不佳。需要改为国内比较好的阿里云或者网
易的 yum 源
在/etc/yum…repos.d/下进行如下操作(请做好相应备份):
> wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
> mv CentOS7-Base-163.repo CentOS-Base.repo
```sh
重建缓存:
```sh
> yum clean all
> yum makecache
环境变量生效
source /etc/profile
./ect/profile
四. Shell 脚本
shell 语言是一门 linux 系统下的工具语言,主要用于写一些 linux 系统下的操作命令,实际上 Shell 是一个命令解释器, 它解释由用户输入的命令并且把它们送到内核。或者直接理解为 shell 命令是可以执行多个 linux 命令的脚本。Shell 种类众多, 有以下种类(一般使用的 Bash,就是 Bourne Again Shell,它是大多数 Linux 系统默认的 Shell):(shell: 壳,就是内核外层的壳语言, 可以给内核传递命令)
- Bourne Shell(/usr/bin/sh 或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
1. 解释器与执行 shell
解释器
#!/bin/sh Bourne shell 版本
#!/bin/bash Bourne Again Shell 版本
执行 shell
chomd +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本 “./”表示当前目录下
2. 演示
#!/bin/bash ## 声明bash脚本
echo $PATH ## PATH是环境变量
name= "xxy" ## 定义变量, name=不能有空格
echo $name ## 打印变量
echo "I am ${name}'s friend'" ## 字符串拼接
names= ("xxy","hj","hs") ## 数组定义
echo ${names[@]} ##遍历数组, 或者使用*
echo ${names[1]} ##取数组第二个元素
## 循环数组
for var in ${names[@]}; ## 每行可以有分号
do
## 判断
if test $var = 'xxy' ## 可以没有空格
then
echo 'I am xxy'
else
echo 'I am not xxy'
fi
done
if [ $(ps ef | grep -c 'ssh') -gt 1 ]; ##查找是否有 ssh 服务
the
echo "ssh service is open"
fi
echo 当前程序名称 $0
echo 参数总数 $#
echo 是否正常退出 1:0 $?
echo 字符串参数列表 $*
echo 数组参数列表 $@
echo pid $$
echo pre pid $?
echo $!
重定向:
test 'aa' -eq "bb" > out ##命令输出到 out 文件,报错信息并不会进入 out
test 'aa' -eq "bb" > out 2>&1 ##将 stderr 合并到 stdout,则报错信息进入了 out
五. 常用命令
ls,ll, wget, curl, history
touch(catch 辅助记忆的单词), mkdir
cat/less/more/tail 等文件查看命令
rm, rmdir
du,df 查看文件大小
root@9e657d6bf003:/opt/flink/conf# du flink-conf.yaml
12 flink-conf.yaml
root@9e657d6bf003:/opt/flink/conf# df flink-conf.yaml
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 263174212 4954408 244781648 2% /
vi
默认情况下,打开 vi 编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、 “O”、“o”、“I”、“i”键。
?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;(反向查找)
ctrl+r: 取消撤销(撤销u)
nyy:将当前行及其下 n 行的内容保存到寄存器?中,其中?为一个字母,n 为一个数字;
p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
:1,3y 复制第一行到第三行
:1,3d 删除第一行到第三行
x 或 X:删除一个字符,x 删除光标后的,而 X 删除光标前的;
D:删除从当前光标到光标所在行尾的全部字符; (localtion->end)
dd:删除光标行正行内容;(ndd加数字删除若干行)
翻屏操作
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
保存/退出
ZZ:命令模式下保存当前文件所做的修改后退出 vi;
跳转
:行号:光标跳转到指定行的行首;
😒:光标跳转到最后一行的行首;
G: 尾行
ng: n行
gg: 首行
替换
a,bs/F/T:替换文本操作,用于在第 a 行到第 b 行之间,将 F 字符串换成 T 字符串。其中,“s/”表示进行替换操作;
重定向 >
一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:
标准输入文件(stdin):stdin 的文件描述符为 0,Unix 程序默认从 stdin 读取数据。
标准输出文件(stdout):stdout 的文件描述符为 1,Unix 程序默认向 stdout 输出数据。
标准错误文件(stderr):stderr 的文件描述符为 2,Unix 程序会向 stderr 流中写入错误信息。
默认情况下,command > file 将 stdout 重定向到 file,command < file 将 stdin 重定向到 file。
echo "content" > str.txt
cat < flink-conf.yaml
查看服务
netstat -nlpt|grep 80 查看该端口号是否被占用
free -m
ps 常用参数-ef/-aux,一般最常用还是-ef,例:ps -ef|grep mysql 查询 mysql 进程
统计命令 wc
ps -ef | grep mysql | wc -l 统计查询出的 mysql 进程的行数+1
查找命令
find/locate/wereis/which
find -name 后跟文件名,可查看文件所在目录,可跟 user,查看属于 user 的文件
locate 用法与 find 基本相似,只是 locate 搜索速度较快些,locate 一般系统不会自带,需要安装,可用 yum 安装
whereis 只能搜索程序名(就是注册了测程序,非常快)
which 则是只查询 path 中的环境变量
压缩和解压命令
gzip/guzip zip/unzip tar
定时任务 crontab
示例(第一个是分钟)
* * * * * sh /opt/lampp/test.sh 表示每分钟执行一次 test.sh 这个脚本
*/5 * * * * sh /opt/lampp/test.sh 表示每 5 分钟执行一次 test.sh 这个脚本
30 21 * * * /usr/local/apache/bin/apachectl restart 表示每晚的 21:30 重启 apache
删除配置文件中的注解
cp nginx.conf nginx.conf.bak
# yum -y install man
cat /nginx-1.15.8/conf/nginx.conf.bak \
| grep -v "#" \
| grep -v "^$" \
> /nginx-1.15.8/conf/nginx.conf
结果:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}