系统相关
首页 > 系统相关> > Linux

Linux

作者:互联网

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

一. 安装

Linux是一个操作系统.

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

1. 虚拟机(非常好用)

2. 双系统(windows + linux)

3. 干掉windows, 单独安装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的目录:
只有一个根目录, 分隔符是/

 

 

 

 

/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

 

 

ip与port

 

 

 

 

 

四. 命令

linux命令格式

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

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

2. 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:忽略操作.

 

 

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

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

 

常用的目录处理指令:

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

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

 

rm的用法:

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

rm 文件夹/文件

 

 

 

 

 

 

 

 

 

 

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目录!

 可见高效的创建目录用上-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!不保存直接退出.
退出后重新登录,然后生效.
编辑这个文件, 写入想永久生效的变量和值, 系统每次开机都会读取这个文件, 让其生效.

 

 

 

 

 

 

 PATH寻找的原理图

 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,简单来说只要开头不是/,就是属于相对路径
因此你必须了解,相对路径是:以你当前所在路径的相对路径来表示的。

 

 

 

 

 

 

 vim编辑器的用法

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

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

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被当作了一个命令

 

移动光标

复制代码
w(e)  移动光标到下一个单词
b    移动到光标上一个单词

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

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

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

`.  移动光标到上一次的修改行
复制代码

查找

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

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

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

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

复制,删除,粘贴

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

数字与命令

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

 输入模式

在命令模式下按下字母i

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

底线命令模式

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

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

随时按下esc可以退出底线命令模式
复制代码

vim工作模式

vim按键

移动光标

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

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

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

底线命令

:! 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

 

 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的重定向符号

>  重定向输出覆盖符, 如同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'

 

 

 

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"

 

 

 

 

 

 

 查看文件/文件夹大小

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

 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:允许压缩

实例

 

 

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

 

 

 

 

 

 

 

 

复制代码
#传输本地文件到远程地址
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为单位显示,可读性强

实例

复制代码
显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
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 命令用于动态地监视进程活动与系统负载等信息

我们来分析一下图片信息

统计信息区

复制代码
第一行 (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命令)

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

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

ps命令

用于查看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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用户管理与文件权限篇

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群的群主

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

创建普通用户

#添加用户
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的缩写, 不仅能列出文件名, 还能列出文件权限信息.

 

 

添加删除用户, 需要注意的是, 涉及到权限的修改, 只能用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

 

 

sudo命令

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

 

 

 

 文件与目录权限

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

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

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

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

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

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

修改权限的命令

chmod

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

 

文件权限

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

目录权限(文件夹权限)

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

 

 

 

 

 

 

 

 

修改文件权限属性

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

[pyyu@oldboy_python root]$ su -

 chown

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

chgrp

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

 

 

 

 

软连接
软连接也叫做符号链接,类似于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,但是删除了本尊, 快捷方式就无意义不存在了

 文件夹创建快捷方式

 

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

语法
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

 

 防火墙

 

 

 

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

复制代码
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

 

 nslookup命令

 

 

 

 

crontab定时任务

 

 

 

 

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

 

 

 

 

 

 

 

 

 

什么是计划任务:
后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。这就用到了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  每隔三分钟执行下时间同步

 

 

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

yum配置详解

 

 

 

 

 

 把机器上的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,txt,root,目录,localhost,maria
来源: https://www.cnblogs.com/libyan/p/14145249.html