[Linux1]入门基础知识

My name is Linus, and I am your God.
——————Linus Torvalds

linux一般来说有2个就业方向,分别是运维岗与开发岗。
其中运维岗分为:系统运维,数据库运维,python运维开发,网络安全,云计算
开发:一般是服务器后台开发。
由于目前接触的是属于服务器后台部署开发,所以也将此做简单的汇总整理,当然了,linux还是推荐鸟叔的私房菜吧.
本次基础主要是为了接下来的部署项目所服务的。

linux简介

免费使用的类Unix操作系统,基于POSIX和UNIX的多用户、多任务,支持多线程和多CPU的操作系统
发行家族:Debian(Ubuntu-Linux Mint) Fedora(RHEL-CentOS ,Oracle Linux) SUSE(SLES-openSUSE)
一般来说,服务器使用LAMP (Linux Apache Mysql Php) 或者 LNMP(linux+Nginx+Mysql+PHP)

本次环境采用的Centos

linux系统启动过程

启动过程分为5个阶段:内核的引导 运行init 系统初始化 建立终端 用户登录系统
首先读入/boot目录下的内核文件,然后运行init (读取/etc/inittab)
许多程序需要开机自启,在windows是服务(service), 在linux是守护进程(daemon),其中有7个运行级别
以上基本的5个阶段。

linux目录结构:

输入su可以进入root用户
登录系统,在当前命令输入:

ls /

会得到以下目录
bin  boot  dev  etc  home  jar  lib  lib64  lost+found  media  mnt  mysql  opt  patch  proc  root  run  sbin  srv  sys  tmp  usr  var  www

下面对一些重要目录做讲解
/bin: 最常用命令的地方
/etc: 存放所有的系统管理所需要的配置文件和子目录
/home:用户的主目录
/lib:动态连接共享库
/usr: unix shared resources共享资源
/usr/bin: 用户使用的应用程序
/var: variable 修改的目录,日志文件
注意/表示根目录 : .或者./ 表示当前目录 …或者…/代表上一层目录

linux文件基本属性

多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,linux对不同的用户访问同一文件的权限做了规定。
chown (change owner): 修改所属用户与组
chmod (change mode):修改用户的权限
输入命令
ll 或 者ls -l,可以显示文件的属性
在这里插入图片描述
d在文件是一个目录文件。接下来的字符中,以三个为一组,且均为rwx的三个参数组合。r表示read,w表示write,x表示execute,注意位置不会变,如果没有权限就会出现减号。同时这九个权限标注从1-9表示,其中1-3是属主权限,4-6是属组权限,7-9其他用户权限。

更改文件属性

1.chgrp 更改文件属组

chgrp [-R] 属组名 文件名

2.chown 更改文件属组

chown [-R] 属主名 文件名

r代表4 ,w代表2,x代表1.例如:-rwxrwx—:分数owner 7,group 7 others 0,所以权限数字就是770
u(uesr), g(group),o(others) + 加入 - 除去 = 设定

touch test1 
ls -al test1 //查看test1权限
chmod u=rwx,g=rx,o=r test1 //修改test1权限

linux文件与目录管理

绝对路径:由根目录 /,例如 /usr/share/doc
相对路径: cd …/man

处理目录

常见的命令:

ls (list files) 
-a 全部的文件(连同隐藏) -d 仅列出目录本身  -l 长数据串列出
cd (change directory)
cd ~ (/root)
pwd (print work directory)
mkdir (make directory)
mkdir test  mkdir -p test1/test2/test3
rmdir (remove directory) 仅删除空的目录
rmdir test  rmdir -p test1/test2/test2
cp (copy file)
cp source destination
rm (remove) 删除非空目录
rm -i bashrc (互动模式,删之前询问动作)
mv (move file)

查看文件

cat (concatenate) 显示文件内容
tac (cat倒着写,从最后一行往上显示)
nl (number lines,显示行号和文件内容) 
more (一页一页的显示文件内容)
space :向下翻一页,enter :翻一行  q:离开more
less (可以往前翻页)
head (只看头几行,默认是10)
head -n 20 /etc/man.config
tail (只看尾几行)

linux用户和用户组管理

多用户多任务的分时操作系统

账户管理

添加账户

useradd 选项 用户名
useradd -d /home/sam -m sam 创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录名。/home为默认的用户主目录所在的父目录

useradd -s /bin/sh -g group -G adm,root gem
新建了一个用户sam,登录shell是/bin/sh,属于group,也属于其他用户组。

删除账户

userdel 选项 用户名
userdel -r sam 删除sam在系统文件中 (/etc/password,/etc/shadow等)

修改账户

usermod 选项 用户名
usermod -s /bin/ksh -d /home/z -g developer sam

用户口令的管理
刚创建时没有口令,但是被系统锁定无法使用,必须要指定口令。

passwd 选项 用户名。超级用户可以指定所有口令,普通用户只能修改自己的口令

系统用户组的管理

增加一个新的用户

groupadd 选项 用户组
groupadd group1 增加了一个新组group1
groupadd -g 101 group2 增加一个新组group2,同时指定新组的组标识是101
groupdel group1 删除group1

系统文件

1 /etc/passwd 最重要的一个文件
对所有用户是可读的

cat /etc/passwd
每行记录又被冒号分隔为7个字段,格式如下:
用户名:口令:用户标识号:组标识号:注释描述:主目录:登录shell

用户登录后,要启动一个进程,负责将操作传给内核,这个进程是用户登录到系统后的特定程序,即shell
shell是用户和linux之间的接口。常见的的有sh( bourne shell), csh(c shell),bash(bourne agagin shell)
默认使用sh。即字段是/bin/sh

拥有账户文件

有许多标准的伪用户,例如mail. usenet audit cron等,也都各自为相关的进程和文件所需要。
由于/etc/passwd文件所有用户都可读,如果用户密码太简单了很容易破解,一般是分离单独放在一个文件中,这个文件是/etc/shadow,只有root才能读取。

字段
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

用户组的所有信息存放在/etc/group文件中。
将用户分组是linux系统的访问权限的一种手段。
由冒号隔开若干个字段,这些字段

cat /etc/group
组名:口令:组标识号:组内用户列表

批量添加用户

1.先编辑一个文本用户文件

touch user.txt
vim user.txt
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash

2.创建一个密码文本

user001:123456
user002:123456

3.创建 设置密码与同步账户

newuser < user.txt
chpasswd < passwd.txt
pwconv

磁盘管理

磁盘常用命令为 df du fdisk
df:

df (disk free):列出整体磁盘的使用量
$ df -h 显示容量
$ df -aT 将系统内所有特殊文件格式及名称列出来
$ df -h /etc
以易读的容量格式显示出来

du:对文件和目录的查看空间

du -a 显示所有文件和目录容量
du -h 容量格式显示

fdisk:分区表操作工具

fdisk -l :列出所有分区信息

磁盘格式化

mkfs [-t 文件系统格式] 装置文件名

vi/vim

vim分为三种模式,分别是命令模式 输入模式 底线命令模式
命令模式 vi/vim
i:输入字符
x:删除所在的字符
:底线命令模式,在最后一行输入命令

输入模式
esc:退出输入模式,切换到命令模式
insert: 切换光标为输入/替换模式,光标变成竖线
home/end:移动光标到行首/行尾
del:删除键

底线命令模式
输入:进入
q:退出程序
w:保存文件
按esc可以退出

yum命令

yum (yellow dog updater ,modified)是shell前端软件包管理器
在Fedora RedHat SUSE
基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装。

yum [options] [command][package ...]

常用命令

yum check-update 列出可更新的软件清单
yum install <package> 安装软件
yum list 列出所有可安装的软件清单
yum list pam* (以pam开头的软件包)
yum remove <package> 删除软件包
yum search <package> 查找软件包

yum clean packages:清除缓存目录下的软件包
yum clean headers:清除缓存目录下的heads
yum clean

国内的yum源:
使用163(网易)
首先备份/ect/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本的repo

CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS5-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo

运行命令生成缓存

yum clean all
yum makecache

apt命令

apt (advanced packaging tools) 是一个debian. ubuntu的软件管理器,需要root权限
常用命令

sudo apt update 列出所有可更新的软件清单
sudo apt install <package_name> 安装
sudo apt remove <package_name>
sudo apt search <keyword>
apt list --installed

shell简介

shell是一个用编写的程序,既是一种命令语言,也是程序设计语言。
这里主要以shell脚本编程为例。
#! 告诉系统路径所指定的程序即解释脚本文件的shell程序。

touch test.sh
vim test.sh

#! /bin/bash
echo "hello world"


chmod +x ./test.sh (使脚本有执行权限)
./test.sh (执行脚本)一定要这样写,在当前目录寻找

shell变量

定义变量时,不需要加美元符号(区别php)

your_name="run"

注意变量名和等号不能有空格
处理可以显式赋值还可以用语句赋值

for file in $(ls /etc) 
for file in  `ls/etc`
将/etc目录下的文件名循环出来

使用变量,只要在变量前面加美元符号即可,赋值的时候不需要

your_run="qin"
echo $your_run
echo ${your_run}
花括号可加可不加,只是为了识别
my=1
readonly my 只读变量
unset my 删除变量

单引号字符串:任何字符原样输出,里面的变量无效
双引号:可以有变量

str="hello\"$your_name"\!\n"
echo $str 

字符串操作

string="abcd"
获取长度
echo ${#string} # 输出4
提取子字符串,注意第一个索引为0
echo ${string:1:3} #输出bcd
查找字符串
echo `expr index "string" ab` #哪个字母先出现就先计算哪个,先输出0

shell数组
支持一维数组,不限定数组的大小,从0开始。

定义数组
array=(value0 value1 value3)
array[0]=0
array[1]=1
可以不用连续的下标

读取数组
val=${array[n]}

获取数组的长度
len=${#array[*]} or. len=${#array[@]}

注释

#
可以把一段要注释的代码用花括号括起来,定义一个函数。
:<<EOF
...注释内容
EOF

shell传递参数

向脚本传递参数,脚本内获取参数的格式是 $n. n代表一个数字,1为执行的第一个参数

echo "shell"
echo "name : $0"
echo "firsr: $1"

chmod +x test.sh
./test.sh 1 2  (后面的是参数)


特殊字符用来处理参数:
$# :传递到脚本的参数个数
$* :以一个单字符串显示所有向脚本传递的参数
$$ 当前进程的id号

shell数组

bash shell只支持一维数组,初始化不需要定义数组的大小,从0开始,使用空格分隔

array_name=(value1 value2 value3)

读取数组
${array_name[index]
echo "${array_name[0]}"

关联数组
可以使用任意字符串或者整数下标来访问数组元素
declare -A array_name
-A 用于声明一个关联数组,键是唯一的,
declare -A site=(["google"]="www.baidu.com",["run"]="www.run.com")

访问数组
echo "${array_name[*]}"
echo "${array_name[@]}" 访问全部元素

获取长度
echo "${array[*]}"

shell 运算符

原生bash不支持数学运算,可以使用命令实现。例如awk,expr。expr是表达式工具,使用它能完成求值工作。

val=`expr 2 + 2` 表达式和运算符之间要有空格,需要被其包含
v=`expr 3 \* 4` 乘号必须要有反斜杠
echo "$val"

关系运算符
只支持数字不支持字符串,除非字符串的值是数字

a=10
b=20
if [ $a -eq $b ] 相等
if [ $a -ne $b ] 不相等
if [ $a -gt $b ] a>b?
if [ $a -lt $b ] a<b?
if [ $a -ge $b ] a>=b?
if [ $a -le $b ] a<=b?

布尔运算符

! 非
-o 或
-a 与

逻辑运算符

&& and
|| or

流程控制

if condition
then 
    command1
    command2
(fi)就一个if
else (elif)
	command

for循环

for var in item1 item2 ... itemN
do
	com1
	com2
done

while语句


while condition
do
	com
done

shell 函数

[function] funname[()]
{
	action
	[return int;]
}

domefun() {
	echo "first"
}

输入输出重定向

一般来说,文件描述符0 是stdin,1是stdout ,2是stderr

command1 > file1 (将命令存入file1)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值