Linux基础介绍

一. linux基础知识

  Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

1. 发行的 linux 版本

  Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。市面上较知名的发行版有:Ubuntu、RedHat、CentOS、DebianFedoraSuSE、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

image-20220115173906869

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;
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月玲珑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值