Linux

参考网址: https://www.cnblogs.com/pyyu/p/9276851.html

一. 安装

Linux是一个操作系统.

如果使用的是windows电脑, 可以采用以下系统方案:

1. 虚拟机(非常好用)

2. 双系统(windows + linux)

3. 干掉windows, 单独安装linux

Linux

centos下载地址: https://mirrors.aliyun.com/centos/

centos配置:

root password:123456

user: maria

installation source: http://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os

software selection: server with GUI  /  development tools

time&date: asia/shanghai

network&hostname: on

 

二. 目录结构

windows的目录结构, 是反斜杠的目录分隔符:
C:\
D:\
E:\
这种多盘符的形式, 可能存在多个目录定点

Linux的目录:
只有一个根目录, 分隔符是/

Linux

Linux

 

 

Linux

 

 

/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。比如插入的U盘或硬盘所显示的文件.

/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt:
 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux:
 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:
 该目录存放一些服务启动之后需要提取的数据。

/sys:
 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
 

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:
这个目录是用来存放一些临时文件的。

/usr:
 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin:
系统用户使用的应用程序。

/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。 /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。 /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。 值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。 /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

三. 远程连接

1. 确保服务器正确获取到了ip地址
ifconfig   查看到讲师机器的ip地址为 192.168.178.134
2. 安装远程连接工具
windows安装xshell或者secureCRT , 这两个软件其实就是封装了ssh命令而异
macos直接使用ssh命令即可
ssh root@192.168.178.134

 

Linux

 

ip与port

Linux

 

 Linux

Linux

 

 Linux

 

四. 命令

linux命令格式

命令 条件/参数 对象/文件/目录

1. 一般情况下, 参数是可选的, 一些情况下, 文件或路径也是可选的

2. linux命令参数之间应该使用一个或多个空格分隔.

Linux

pwd: 查询当前所在目录
[maria@localhost ~]$ pwd
/home/maria


ls: 查询当前目录下的内容, ls是list的缩写
ls -a 文件夹名称: 查看文件夹下的所有内容, 包括隐藏的内容, 其中a代表all, 在linux中, 以.开头的文件是隐藏文件, 默认直接看不到 [maria@localhost ~]$ ls Desktop Documents Downloads Music Pictures Public Templates Videos

修改linux支持中文的命令:
export LC_ALL=zh_CN.UTF-8   

ifconfig命令用户查看网络配置信息: [maria@localhost s3]$ ifconfig
如果这条命令不能用, 则应先切换到root超级用户, 然后输入以下内容安装软件包 net-tools
yum install net-tools -y

普通用户切换到root用户:

maria@localhost s3]$ su - root
Password:
[root@localhost ~]#

 

 

切换图形化和纯黑屏的命令:
ctrl + alt + f1-f7 代表linux默认的7个终端
f1是图形化, 其他是纯黑屏, 这些基本用不上, 通常都是远程连接的方式操作.


ctrl+c:忽略操作.

Linux

 Linux

 

几个特殊的目录:
. 当前目录 .. 上一层目录 - 前一个工作目录 ~ 当前【用户】所在的家目录

[maria@localhost ~]$ ls .
Desktop Documents Downloads Music Pictures Public Templates Videos
[maria@localhost ~]$ ls ..
maria

 

常用的目录处理指令:

cd : (change directory,更改目录)
pwd:(显示当前目录)
mkdir:(建立一个新目录)
rmdir:(删除一个空目录)

cd是change directory的缩写,这是用来变换工作目录的命令,注意命令和目录之间有一个空格。

Linux

 

rm的用法:

rm是remove的缩写, 用于删除文件或文件夹.

rm 文件夹/文件

 

Linux

 

 

 Linux

 

 

 Linux

 

 

Linux

 

1. 增
1) 创建普通文件
touch 文件名

[maria@localhost ~]$ pwd
/home/maria
[maria@localhost ~]$ touch music.txt
[maria@localhost ~]$ ls
Desktop Downloads music.txt Public Videos
Documents Music Pictures Templates

2) 创建隐藏文件
touch .文件名

maria@localhost ~]$ touch .vedio.txt
[maria@localhost ~]$ ls -a
. .bash_profile Desktop .ICEauthority music.txt Templates
.. .bashrc Documents .local Pictures .vedio.txt
.bash_history .cache Downloads .mozilla .pki Videos
.bash_logout .config .esd_auth Music Public

3) 创建文件夹
mkdir 文件夹名称
分为绝对路径和相对路径两种方式

maria@localhost ~]$ mkdir s25
[maria@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public s25 Templates Videos
[maria@localhost ~]$ cd s25
[maria@localhost s25]$ pwd
/home/maria/s25

相对路径的方式创建文件夹:

maria@localhost s25]$ mkdir ../s1
[maria@localhost s25]$ cd ..
[maria@localhost ~]$ ls
Desktop Downloads Pictures s1 Templates
Documents Music Public s25 Videos

绝对路径的方式创建文件夹:

[maria@localhost ~]$ mkdir /home/maria/s2
[maria@localhost ~]$ ls
Desktop Downloads Pictures s1 s25 Videos
Documents Music Public s2 Templates

 

4) 创建递归的文件夹
mkdir -p 文件夹名/文件夹名

[maria@localhost ~]$ mkdir -p ./s3/s33
[maria@localhost ~]$ ls
Desktop Downloads Pictures s1 s25 Templates
Documents Music Public s2 s3 Videos
[maria@localhost ~]$ cd s3
[maria@localhost s3]$ ls
s33


mkdir -p /s25/男同学 /s25/女同学
在根目录下创建文件夹s25, 并在s25下创建了文件夹男同学和女同学.
-p 表示创建文件夹及其父文件夹.

也可以采用以下写法:
mkdir -p /s25/{男同学,女同学}
2. 删
rm 命令, 是remove的缩写, 删除文件或文件夹
语法:
rm 文件/文件夹
比如:
rm text.txt #删除文件, 默认有让用户确认删除的提示
rm -f test.txt # 强制删除文件, 不需要提示确认
rm -r 文件夹名 #递归删除文件夹及其内部的文件

# 提问: 如何强制删除文件夹及其内部的资料?
# 这是一个危险的命令, 理解后请谨慎使用.
rm -rf /* # 叫做删库到跑路, 准备被打死吧,万万不得敲
rm -rf ./* 等同于 rm -rf * # 强制删除当前目录下的所有内容

maria@localhost ~]$ rm music.txt
[maria@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos


3. 改 cd /home # 切换到/home目录下
ls . # 查看性对的home目录下有什么内容

[maria@localhost ~]$ cd /home
[maria@localhost home]$ pwd
/home
[maria@localhost home]$ ls .
maria

4.查
1)查看所有文件
ls -a / ls -a .
2)

mkdir,建立新目录

mkdir是make directory的缩写,用来建立新目录,在默认情况下,目录得一级一级的建立。

例如我要建立/home/oldboy/python目录,我就必须有/home,然后/home/oldboy,最后/home/oldboy/python,如果没有/home/oldboy,则不能建立python目录!

Linux

 可见高效的创建目录用上-p参数,可以直接执行命令【mkdir -p /home/oldboy/python】,系统会自动添加上/home,/home/oldboy,/home/oldboy/python依次建立目录,是不是很方便,^ ^

 tree

tree的作用: 以树状图显示文件目录的层级结构
tree的安装: 
yum install tree -y  
-y表示默认同意安装
yum如同pip一样, 用于自动安装软件.

[root@localhost ~]# mkdir -p a/b c/d
[root@localhost ~]# tree
.
├── a
│   └── b
├── anaconda-ks.cfg
├── c
│   └── d
└── initial-setup-ks.cfg


4 directories, 2 files
[root@localhost ~]#

 

查看linux命令的帮助信息

1. 用man手册, linux提供的帮助文档
man ls
man cp
man mkdir

[root@localhost ~]# man mkdir


2. 命令加上 --help参数, 查看简短帮助信息
mkdir --help
rm --help

[root@localhost ~]# mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
3. 在线搜索一些命令查询网站
http://linux.51yip.com/

echo命令

echo命令如同python的print, 能够输出字符串到屏幕, 给用户看
1. 打印字符串
[root@localhost ~]# echo "good day"
good day

2. 输出变量值
[root@localhost ~]# name="xxx"
[root@localhost ~]# echo name
name
注意: 定义变量时, 等号左右不能有空格

path变量

 

PATH就是定义一些常用的软件可执行命令的目录, 放入系统中, 可以快捷的查询, 而不需要每次都输入绝地路径
1. 为什么系统能够直接找到python解释器?
[root@localhost ~]# which python
/usr/bin/which: no python in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

2. 学习linux的PATH
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

注意: PATH的路径是从左到右依次寻找的. 环境变量只定位到软件目录下的bin.

3. 如何修改变量的值?
在命令行中对变量重新赋值, 是临时生效的.需要修改系统全局变量配置文件中.
vim /etc/profile
输入i进入编辑模式
编辑
按esc退出编辑模式
输入:wq!保存并退出 或 输入:q!不保存直接退出.
退出后重新登录,然后生效.
编辑这个文件, 写入想永久生效的变量和值, 系统每次开机都会读取这个文件, 让其生效.

 

 Linux

 

 

 Linux

 

 PATH寻找的原理图

Linux

 linux单引号和双引号的区别

单引号中的内容, 仅仅就是个字符串, 不识别任何其他的特殊符号
双引号中的内容, 能够识别特殊符号以及变量

[root@localhost ~]# echo $name
xxx
[root@localhost ~]# echo "$name"
xxx
[root@localhost ~]# echo '$name'
$name

 

绝对路径和相对路径
绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/oldboy/test.py;
相对路径:相对于目前路径的文件名写法。例如./home/oldboy/exam.py或../../home/oldboy/exam.py,简单来说只要开头不是/,就是属于相对路径
因此你必须了解,相对路径是:以你当前所在路径的相对路径来表示的。

 

 Linux

 

 Linux

 Linux

 

 vim编辑器的用法

https://www.cnblogs.com/pyyu/p/9460649.html

最基本的编辑器
windows中:
记事本
sublime
notepad++
...
linux中:
vi等同于记事本, 很难用, 没有语法颜色提示等 vim等同于notepad++, 有颜色高亮, 支持安装第三方插件, 语法补全等高级编辑器

Linux

vim使用流程
1. vim需要单独安装
yum install vim -y
2. vim打开一个不存在的文件时, 默认会创建此文件
用vim写一个python脚本
第一步: vim first.py 此时会进入命令模式, 按下字母i, 进入编辑模式
第二步: 想要退出编辑模式, 按下键盘的esc, 回到命令模式
第三步: 输入英文:, 进入底线命令模式
第四部: 输入:wq!, write写入内容, quit退出vim, !强制性操作
:wq! 强制保存写入内容, 直接退出
:q! 强制不保存内容, 直接退出
3. 此时可以查看一下文件内容

[root@localhost ~]# cat first.py
print("today is a good day")

4. 如何执行这个脚本?

[root@localhost ~]# python first.py
bash: python: command not found...

由于尚未在linux中安装python, 所以无法执行.

什么是 vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令

 

移动光标

Linux
w(e)  移动光标到下一个单词
b    移动到光标上一个单词

数字0  移动到本行开头
$    移动光标到本行结尾
x 删除光标所在的字符

H    移动光标到屏幕首行
M    移动到光标到屏幕的中间一行
L    移动光标到屏幕的尾行
g    移动光标到文档的首行
G    移动光标到文档尾行

ctrl + f  下一页
ctrl + b  上一页

`.  移动光标到上一次的修改行
Linux

查找

Linux
/chaoge     在整篇文档中搜索chaoge字符串,向下查找
?chaoge     在整篇文档中搜索chaoge字符串,向上查找

*        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
#        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处

gd        找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上

%    找到括号的另一半!! 光标停留在括号的一半上, 按下shift+%能快速找到另一半.
Linux

复制,删除,粘贴

Linux
yy    拷贝光标所在行
dd    删除光标所在行
D     删除当前光标到行尾的内容
dG    删除当前行到文档尾部的内容
p     粘贴yy所复制的内容
x   删除光标所在的字符
u 撤销上一步的操作
Linux

数字与命令

3yy    拷贝光标向下的3行
5dd    删除光标向下的5行

 输入模式

在命令模式下按下字母i

即可进入输入模式,可以编写代码啦。。。

底线命令模式

在命令模式下输入冒号(英文的:),就进入了底线命令模式,在底线命令模式下可以输入单个或多个字符的命令,常用命令有:

Linux
:q!     强制退出
:wq!    强制写入退出
:set nu 显示行号
:数字  调到数字那行

随时按下esc可以退出底线命令模式
Linux

vim工作模式

Linux

vim按键

移动光标

Linux
移动光标的方法
h 或 向左箭头键(←)    光标向左移动一个字符
j 或 向下箭头键(↓)    光标向下移动一个字符
k 或 向上箭头键(↑)    光标向上移动一个字符
l 或 向右箭头键(→)    光标向右移动一个字符

向下移动5行      5j
向右移动10字符    10l

n(space)    按下数字n,例如10,然后按下空格,光标会向右移动10个字符
Linux

底线命令

:! command    暂时离开vim指令模式,执行command的结果
例如  :!ip a    临时看一下ip信息,然后可以回到vim

:set nu    显示vim行号
:set nonu    取消行号

更多nb的vim用法请看菜鸟教程:http://www.runoob.com/linux/linux-vim.html

 修改linux的全局配置文件

1. 名字叫做/etc/profile, 里面是shell脚本语言
2. 编辑这个文件, 写入想永久生效的变量和值, 系统每次开机都会读取这个文件, 让其生效
vim /etc/profile
export LC_ALL=zh_CN.UTF-8
export LC_ALL=en_US.UTF-8

 

Linux

 cat 命令

cat用于读取文件内容
语法:
cat 文件名
[root@localhost ~]# cat first.py
print("today is a good day") 读取文件内容, 且显示行号 cat -n 文件名

[root@localhost maria]# cat -n fist.py
1 print('today is a good day!')

 如果开机没有ip怎么办?

获取IP的步骤如下:
1. vim编辑网卡配置文件, 修改如下参数:

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33
[root@localhost network-scripts]# vim ./ifcfg-ens33

修改一下参数:
ONBOOT=yes

2. 确保vmware正确选择了 桥接 或 NAT, 且已经连上了

3. 命令重启网络设置
systemctl stop NetworkManager # 关闭无线网络服务
systemctl restart network # 重启有线网服务
#这两个命令执行都没有任何提示, 表示正确重启了网络配置

4. 查看ip地址是否存在了
ip addr show

 

 Linux

 

 linux的重定向符号

>  重定向输出覆盖符, 如同python中的w模式
[root@localhost maria]# echo "apple" > apple.txt
[root@localhost maria]# ls
apple.txt  Documents  fist.py  Pictures  Templates
Desktop    Downloads  Music    Public    Videos
[root@localhost maria]# cat apple.txt
apple
echo "apple" > apple.txt 不会打印apple, 而是将其写入到apple.txt中. 由于是覆盖符, 重复写入, 只显示一行.

>>  重定向输出追加符, 如同a模式

[root@localhost maria]# echo "big apple" >> apple.txt
[root@localhost maria]# cat -n apple.txt
1 apple
2 big apple

<  重定向写入覆盖符, 用的很少, 用在数据导入等操作中, mysql数据导入
<<  用在cat命令中, 很少见

[root@localhost maria]# cat >>orange.txt<<EOF
> orange
> big orang
> small orang
> EOF
[root@localhost maria]# cat orange.txt
orange
big orang
small orang

 cp 命令

拷贝命令
对于配置文件的修改, 或者是代码文件的修改, 防止突然写错了, 复制一份
1. 复制文件
cp apple.txt apple_new.txt

[root@localhost maria]# cp apple.txt apple_new.txt
[root@localhost maria]# ls
apple_new.txt Desktop Downloads Music Pictures Templates
apple.txt Documents fist.py orange.txt Public Videos
[root@localhost maria]# cat -n apple_new.txt
1 apple
2 big apple

2. 复制文件夹
复制文件夹需要添加-r递归复制参数
cp -r aa aa_new

[root@localhost maria]# mkdir aa
[root@localhost maria]# ls
aa apple.txt Documents fist.py orange.txt Public Videos
apple_new.txt Desktop Downloads Music Pictures Templates
[root@localhost maria]# cp -r aa aa_new
[root@localhost maria]# ls
aa apple.txt Downloads orange.txt Templates
aa_new Desktop fist.py Pictures Videos
apple_new.txt Documents Music Public

mv命令

mv命令可以移动文件, 文件夹的路径
mv命令也可以进行重命名
1. 重命名
mv 旧文件名 新文件名

[root@localhost maria]# mv aa a1
[root@localhost maria]# ls
a1 apple.txt Downloads orange.txt Templates
aa_new Desktop fist.py Pictures Videos
apple_new.txt Documents Music Public
[root@localhost maria]# mv apple_new.txt apple1.txt
[root@localhost maria]# ls
a1 apple1.txt Desktop Downloads Music Pictures Templates
aa_new apple.txt Documents fist.py orange.txt Public Videos

2. 移动位置
mv 想要移动的文件/文件夹 移动之后的目录名(如果文件夹存在,则移动, 不存在则改名)

[root@localhost maria]# mv apple1.txt a1  a1存在,移动
[root@localhost maria]# cd a1
[root@localhost a1]# ls
apple1.txt
[root@localhost a1]# cd ..
[root@localhost maria]# mv orange.txt b   b不存在, 改名
[root@localhost maria]# ls
a1 apple.txt Desktop Downloads Music Public Videos
aa_new b Documents fist.py Pictures Templates

alias命令

为什么rm命令默认有一个让用户确认删除的动作呢?
因为rm的-i参数的作用
alias  直接输入可以查看当前系统的别名

[root@localhost maria]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

 

Linux

 

 

find命令

可以用于搜索机器上的所有资料, 按照文件名搜索, linux一切皆文件
语法:
find 从哪里找 -type 文件类型 -size 文件大小 -name 内容名字
-type f 找普通文本文件
-type d 找文件夹类型
-name 指定文件的名字内容

示例:
1. 在系统上全局搜索.txt文件

  [root@localhost maria]# find / -name "*.txt"

  2. 指定在etc目录下局部搜索一个网卡配置文件, 网卡名字是以ifcfg开头的文本类型文件

  [root@localhost maria]# find /etc -type f -name "ifcfg*"
   /etc/sysconfig/network-scripts/ifcfg-ens33

  3. 全局搜索和python相关的文件和文件夹

[root@localhost maria]# find / -name "python"

 

 

 Linux

 

 Linux

 Linux

 查看文件/文件夹大小

ls -lh  -h参数, 显示文件单位, 以kb/mb/gb为单位, -l是列表形式, 列出文件夹中详细信息

 linux的管道符命令

 Linux

 grep命令

grep是linux强大的三剑客之一, 从文本中过滤有用信息的命令
语法:
grep 想过滤的字符串 需要过滤的文件    用法一
cat 文件 | 想要的内容 用法二
示例1

[root@localhost maria]# vim test.txt
[root@localhost maria]# cat test.txt
genzhewozuoshouyoushouyigemandongzuo
# cichuwuyong


[root@localhost maria]# grep "zuo" test.txt
genzhewozuoshouyoushouyigemandongzuo
[root@localhost maria]# vim test.txt
[root@localhost maria]# grep -n "today" test.txt
5:today is a sunny day
[root@localhost maria]# vim test.txt
[root@localhost maria]# cat -n test.txt
1 genzhewozuoshouyoushouyigemandongzuo
2 # cichuwuyong
3
4
5 today is a sunny day
6 so i am very happy
7 I like eating aplle, especially big apple.
[root@localhost maria]# grep -i "I" test.txt   -i表示不区分大小写
genzhewozuoshouyoushouyigemandongzuo
# cichuwuyong
today is a sunny day
so i am very happy
I like eating aplle, especially big apple.
[root@localhost maria]# grep -v "^$" test.txt  -v表示翻转查询结果, 此句表示找出空行以外的行
genzhewozuoshouyoushouyigemandongzuo
# cichuwuyong
today is a sunny day
so i am very happy
I like eating aplle, especially big apple.
[root@localhost maria]# grep -v "^#" test.txt | grep -v "^$"   此句表示找出空行和注释行以外的行
genzhewozuoshouyoushouyigemandongzuo
today is a sunny day
so i am very happy
I like eating aplle, especially big apple.
[root@localhost maria]#

示例2
cat 文件 | 想要的内容    用法二
找出linux用户信息文件中有关maria的行信息

[root@localhost etc]# cat passwd | grep "maria"
maria:x:1000:1000:maria:/home/maria:/bin/bash

 head, tail命令

head和tail都是能够读取文件内容的
语法
head 文件名  # 默认从文件的前10行看
head -3 文件名 # 查看文件的前3行
tail 文件名 # 默认从文件的后10行看
tail -2 文件名 # 查看文件的后两行

tail命名的实时监控用法, 可以用于检测线上的日志文件, 检测用户的请求信息
tail -f 文件名 # 实时刷新文件内容

 scp命令(secure copy)

Linux scp命令用于Linux之间复制文件和目录。

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

语法
scp 【可选参数】 本地源文件 远程文件标记

参数

-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩

实例

Linux

 

 

 注意: 可以通过ping 对方IP地址, 验证是否可以和对方通信.

Linux

 

 

 Linux

 

 Linux

 

 

 

Linux
#传输本地文件到远程地址
scp 本地文件  远程用户名@远程ip:远程文件夹/
scp 本地文件  远程用户名@远程ip:远程文件夹/远程文件名

scp /tmp/chaoge.py root@192.168.1.155:/home/
scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_python.py

scp -r  本地文件夹  远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy

#复制远程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/

 

lrzsz工具

用于windows(基于xshell工具)和linux之间互相传递文件
1. 安装此工具
yum install lrzsz -y
2. 安装好lrzsz之后, 就存在了两个命令, 一个是rz, 一个是sz
rz   # 直接输入rz命令, 跳出一个弹窗, 接收windows的资料
sz 文件   # 发送linux的一个文件, 发给windows某个位置, 也会跳出一个弹窗

 

 du 命令

Linux du命令用于显示目录或文件的大小。

du会显示指定的目录或文件所占用的磁盘空间。

用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强

实例

Linux
显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
du   

#显示/home的总大小
du -sh /home

[root@localhost etc]# du -sh /home
14M /home

显示当前目录下所有文件的大小 

[root@localhost etc]# du -h ./*
4.0K ./adjtime
4.0K ./aliases
4.0K ./alsa/conf.d
12K ./alsa
4.0K ./alternatives

 top 命令

top 命令用于动态地监视进程活动与系统负载等信息

Linux

我们来分析一下图片信息

统计信息区

Linux
第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比

第四行:内存信息(与第五行的信息类似与free命令)

  • 8053444 total:物理内存总量
  • 7779224 used:已使用的内存总量
  • 274220 free:空闲的内存总量(free+used=total)
  • 359212 buffers:用作内核缓存的内存量
第五行:swap信息
8265724 total:交换分区总量
33840 used:已使用的交换分区总量
8231884 free:空闲交换区总量
4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

注意: 按q可以退出top指令.

ps命令

用于查看linux进程信息的命令

 

Linux

 

语法:
ps -ef 
# -ef 是一个组合参数, -e - f的缩写, 默认显示linux所有的进程信息, 以及pid,时间, 进程名等信息
# 过滤系统有关vim的进程

[root@localhost etc]# ps -ef | grep "vim"
root 34186 10857 0 09:13 pts/0 00:00:00 grep --color=auto vim

 

1. 一个django运行后, 如何验证django是否运行了, 它会产生些什么内容?

能够产生日志, 检测用户的请求, 说明django运行了

查看端口情况, django会占用一个端口

产生一个python相关的进程信息

 

 kill 命令

kill 进程的id号
如果遇见卡死的进程, 杀不掉, 就发送-9强制的信号
kill -9 pid

netstat 命令

用于查看linux的网络端口信息
语法:
[root@localhost etc]# netstat -tunlp  #显示机器所有的tcp/udp的所有端口连接情况

具体参数用法详见:

http://linux.51yip.com/search/netstat

Linux

 

 

 

Linux

 

 

 Linux

Linux

 

 Linux

 

 Linux

 

 

Linux

 

 

Linux

 

Linux

 

 

 Linux

 

 

Linux

 

 Linux

 

 Linux

 Linux

 

 Linux

 

 Linux

 

 

Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 Linux

 

 

Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

用户管理与文件权限篇

https://www.cnblogs.com/pyyu/articles/9355477.html

现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源。
普通用户在所分配到的资源内进行各自的操作,相互之间不受影响。但是这些普通用户的权限是有限制的,且用户太多的话,管理就不便,从而引入root用户。
此用户是唯一的,且拥有系统的所有权限。root用户所在的组称为root组。“组”是具有相似权限的多个用户的集合。
在Linux系统中,用户也有自己的UID身份账号且唯一
系统管理员UID为0
系统用户UID为1~999    Linux安装的服务程序都会创建独有的用户负责运行。
普通用户UID从1000开始:由管理员创建

root的权利

Linux系统的特性就是可以满足多个用户,同时工作,因此Linux系统必须具备很好的安全性。
在安装RHEL7时设置的root管理员密码,这个root管理员就是所有UNIX系统中的超级用户,它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等等。
因此“能力越大,责任越大”,root权限必须很好的掌握,否则一个错误的命令可能会摧毁整个系统。

用户组GID

为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用 户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方 便为组中的用户统一规划权限或指定任务。
假设有一个公司中有多个部门,每个部门中又 有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设 置权限。
例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的 数据库信息等。
Linux管理员在创建用户时,将自动创建一个与其同名的用户组,这个用户组只有该用户一个人

Linux/unix是一个多用户、多任务的操作系统。

root:默认在Unix/linux操作系统中拥有最高的管理权限。可以理解为qq群的群主

普通用户:是管理员或者具备管理权限的用户所创建的,只能读、看,不能增、删、改。

Linux

创建普通用户

#添加用户
useradd oldboy 
#设置密码       
passwd redhat

root用户可以修改其他所有人的密码,且不需要验证
如果passwd后未指定用户, 则为当前登录用户修改密码

切换用户

su命令可以切换用户身份的需求,普通用户切换, 需要输入密码, root用户切换不需要输入密码
su - username

su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息
需要输入要切换的用户的密码

 id 命令

用于查看用户的账户信息

[root@localhost etc]# id root
uid=0(root) gid=0(root) groups=0(root)

[root@localhost etc]# id maria
uid=1000(maria) gid=1000(maria) groups=1000(maria),10(wheel)

 

组的概念

以组为单位进行权限控制, 方便管理.

ll命令是ls -l的缩写, 不仅能列出文件名, 还能列出文件权限信息.

 

Linux

 

添加删除用户, 需要注意的是, 涉及到权限的修改, 只能用root去操作, 其他人基本上没权限
useradd maria     # 创建用户
passwd maria      # 为用户修改密码
userdel maria     # 删除用户
userdel -rf maria # 删除用户, 且删除用户的家目录

 

# 查看当前用户(我是谁)
whoami
# 切换用户
su - oldboy
# 退出用户登录
logout
ctrl + d

 

一般情况下,在生产环境避免直接用root用户,除非有特殊系统维护需求,使用完立刻退回普通用户
非交互式设置密码(echo "redhat"|passwd --stdin oldboy && history -c)

 

Tip:
1.超级用户root切换普通用户无需密码,例如“群主”想踢谁就踢谁
2.普通用户切换root,需要输入密码
3.普通用户权限较小,只能基本查看信息
4.$符号是普通用户命令提示符,#是超级管理员的提示符
root是当前用户,oldboyedu是主机名,~代表当前路径,也是家目录

 

groupadd命令

group命令用于创建用户组,为了更加高效的指派系统中各个用户的权限,在工作中常常添加几个用户到一个组里面,这样可以针对一类用户安排权限。
例如超哥以前在公司里,就负责添加openLDAP用户管理,偶尔*,美国的同事去上海协作,我就得给他们添加到it部门组里面,以至于他们有对服务器操作的权限。
groupadd it_dep

 

userdel删除用户

-f     强制删除用户
-r    同事删除用户以及家目录
userdel -r pyyu

 Linux

 

sudo命令

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

 

Linux

Linux

Linux

 Linux

Linux

 Linux

 文件与目录权限

Linux权限的目的是(保护账户的资料)

Linux权限主要依据三种身份来决定:

user/owner 文件使用者,文件属于哪个用户
group 属组,文件属于哪个组
others 既不是user,也不再group,就是other,其他人
什么是权限

在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。

对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录

Linux

 

 Linux

 

文件类型
- 一般文件 d 文件夹 l 软连接(快捷方式) b 块设备,存储媒体文件为主 c 代表键盘,鼠标等设备
文件权限
r    read可读,可以用cat等命令查看
w    write写入,可以编辑或者删除这个文件
x    executable    可以执行

Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 Linux

修改权限的命令

chmod

chmod [身份]   [参数]   [文件]
    u(user)   +(添加)  
    g(group)   -(减去)
    o(other)  =(赋值)
    a(all)

 

文件权限

r    read可读,可以用cat等命令查看
w    write写入,可以编辑或者删除这个文件
x    executable    可以执行

目录权限(文件夹权限)

r    可以对此目录执行ls列出所有文件
w    可以在这个目录创建文件
x    可以cd进入这个目录,或者查看详细信息

 

 Linux

 

Linux

 

 

 

 Linux

 

修改文件权限属性

普通用户只能修改自己的文件名,时间与权限(注意)
因此修改其他用户权限,只能用最nb的root用户
#切换root用户

[pyyu@oldboy_python root]$ su -

 chown

change owner的缩写
更改文件的所有者, user
语法:
chown 新属主 file.txt

chgrp

更改文件的拥有组, group
change group的缩写
chgrp 新属组 file.txt

 

Linux

 

 Linux

 

软连接
软连接也叫做符号链接,类似于windows的快捷方式。

常用于安装软件的快捷方式配置,如python,nginx等

复制代码
ln -s 目标文件  软连接名

1.存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root     10 10月 15 21:23 test.txt

2.在/home目录中建立软连接,指向/tmp/test.txt文件
ln -s /tmp/test.txt my_test

3.查看软连接信息
lrwxrwxrwx 1 root root 13 10月 15 21:35 my_test -> /tmp/test.txt
l表示软连接类型的文件.
4.通过软连接查看文件 cat my_test my_test只是/tmp/test.txt的一个别名,因此删除my_test不会影响/tmp/test.txt,但是删除了本尊, 快捷方式就无意义不存在了

Linux

 文件夹创建快捷方式

Linux

 

打包不节省空间
压缩节省磁盘空间

语法
tar命令

功能参数
-z  调用gzip命令, 压缩文件, 加上这个参数才会节省磁盘空间
-x  解包
-v  显示整个过程
-f  必须写在参数结尾, 指定压缩文件的名字
-c  打包
 tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
语法

复制代码
tar(选项)(参数)
-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
--exclude=<范本样式>:排除符合范本样式的文件。
压缩文件的后缀, 本没有意义, 只是告诉别人, 这个文件是用什么命令压缩/解压缩的
*.gz gzip命令解压缩
*.tar 用tar命令解压缩
*.xz 用xz命令解压
*.zip 用unzip解压

 

案例1: 将aa目录下的所有内容打包成aa.tar

[root@localhost aa]# tar -cvf aa.tar ./*
./aaa/
./aaaa/
./aaaaa/

[root@localhost aa]# ls
aa.tar aaa aaaa aaaaa

 

解包

[root@localhost aa]# tar -xvf aa.tar ./
./aaa/
./aaaa/
./aaaaa/

案例2: 打包压缩, 解压缩

[root@localhost c]# ls
c1 c2
[root@localhost c]# tar -zcvf cc.tar.gz ./*
./c1/
./c2/
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)
[root@localhost c]# ls
c1 c2 cc.tar.gz
[root@localhost c]# rm -r c1
rm: remove directory 'c1'? y
[root@localhost c]# rm -r c2
rm: remove directory 'c2'? y
[root@localhost c]# ls
cc.tar.gz
[root@localhost c]# tar -zxvf cc.tar.gz ./
./c1/
./c2/
[root@localhost c]# ls
c1 c2 cc.tar.gz

 

 防火墙

Linux

 

 Linux

 

关闭防火墙具体操作如下:

复制代码
centos7默认已经使用firewall作为防火墙了
1.关闭防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld    #关闭防火墙
systemctl disable firewalld#关闭防火墙开机启动
systemctl is-enabled firewalld.service#检查防火墙是否启动
DNS

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
查看Linux的dns,唯一配置文件

配置文件
cat /etc/resolv.conf
#dns服务器地址
nameserver 119.29.29.29
nameserver 223.5.5.5
本地强制dns解析文件/etc/hosts

指定本地解析:
/etc/hosts
主机IP    主机名    主机别名
127.0.0.1        www.pyyuc.cn

Linux

 Linux

 nslookup命令

 Linux

 Linux

 

 Linux

crontab定时任务

Linux

 

 Linux

 

 Linux

 注意: 只写命令, 不加命令的绝对路径是无法生效的.

 Linux

 

 Linux

 

 Linux

 

 Linux

 

 

什么是计划任务:
后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。这就用到了crond服务

crond服务相关的软件包
[root@MiWiFi-R3-srv ~]# rpm -qa |grep cron
cronie-anacron-1.4.11-14.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-14.el7.x86_64

这些包在最小化安装系统时就已经安装了,并且会开机自启动crond服务,并为我们提供好编写计划任务的crontab命令。

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似
语法

复制代码
crontab (选项)(参数)
-e:编辑该用户的计时器设置;
-l:列出该用户的计时器设置;
-r:删除该用户的计时器设置;
-u<用户名称>:指定要设定计时器的用户名称。

存放定时任务的文件
/var/spool/cron
复制代码
注意:

1 查看计划任务的执行:tail -f /var/log/cron

2 写计划任务时,命令必须加上绝对路径,否则会出现这种情况:从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,比如* * * * * reboot就会出现这种情况,需要将reboot写成/usr/sbin/reboot

3.  计划任务执行的命令 是否存在,软件是否安装  

4. 确保crontab服务运行  

 

systemctl status cron

ps -ef|grep crond
5. 检测crontab是否开机启动

 

systemctl is-enabled crond
crontab配置文件

复制代码
在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin   这一条件限制了命令的查找范围, 所以在写命令时要用命令的绝对路径, 否则会导致很多命令无法生效.
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 分 时  日 月  周
复制代码
复制代码
crontab任务配置基本格式:
*  *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
30 08 * * *  每天8.30去上班  
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com  每隔三分钟执行下时间同步

Linux

 

 Linux

 https://www.cnblogs.com/pyyu/articles/9355477.html

yum配置详解

Linux

 

 

 Linux

 

 Linux

 把机器上的yum源撤了, 换成别的yum源. 方法如下:

1. 下载wget命令
yum install wget -y
2. 备份旧的yum仓库源

[root@localhost home]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mkdir repobak
[root@localhost yum.repos.d]# mv *.repo repobak
[root@localhost yum.repos.d]# ls
repobak

3. 下载新的阿里yum源仓库

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

注意:

下载地址为:

阿里巴巴镜像开源网站: https://developer.aliyun.com/mirror/

https://developer.aliyun.com/mirror/centos

4. 下载epel仓库

[root@localhost yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

下载地址: 

https://developer.aliyun.com/mirror/epel

 

[root@localhost yum.repos.d]# ls
CentOS-Base.repo epel-playground.repo epel-testing.repo repobak
epel-modular.repo epel-testing-modular.repo epel.repo

 

 Linux

 

 Linux

 

上一篇:ruby-on-rails-capistrano部署后ec2服务器中缺少puma.sock


下一篇:vue的传参方式和router使用技巧