linux方向
- linux运维
- linux嵌入式开发
- 在linux下做各种程序开发
应用领域
- 个人桌面领域
- 服务器领域(java c++程序部署到linux服务器)
- 嵌入式(运行稳定,内核小可达到几百kb,机顶盒,物联网)
CPU的架构
两种主要的cup架构:RISC(精简指令集)和CISC (复杂指令集)
Linux系统使用的是目录树架构,但我们的文件放置在磁盘分区当中,这样就引入了“mount(挂载)”
linux分区
boot分区(1GB) 交换分区(2GB)虚拟内存 根分区(剩余内存)
在Linux当中,默认root的提示字符为 # ,而一般身份使用者的提示字符 为 $
[Ctrl] + [Alt] + [F2]~[F6] 打开图形化界面
[Ctrl] + [Alt] + [F1] :图形接口桌面
重命名目录或文件
`mv aaa bbb` //将目录aaa重命名为bbb
`mv aaa.txt bbb.txt` //将aaa文件重命名bbb
touch 新建文件
vim vi
编辑文件
cat 打开文件
cd ..
上一级
cd /
根目录
cd ~
home界面
cd ../..
返回上两级目录
cp -a
复制文件夹
echo 重定向
tar 打包文件
zip 压缩文件
unzip 解压
useradd 创建用户
文件打包和压缩
打包和压缩的区别
打包是指将一大堆文件按或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件
(主要是linux压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将文件打包成一个包)
命令: tar/unzip/zip
tar -zcvf
打包压缩后的文件名 要打包的文件可以多个
z 调用gzip压缩命令进行压缩
c 打包文件
v 显示运行过程
f 指定文件名
-C 解压到指定路径
tar - cvf ab.tar 1.txt //将1.txt文件打包名为ab.tar
tar -zcvf ab.tar.gz 1.txt 2.txt //将1.txt 2.txt 压缩打包为ab.tar.gz
tar -zxvf abc.tar.gz -C abc/aabb //将abc.tar.gz 解压到指定的目录
查找命令
grep
grep title note.md
grep -n
显示行数
grep -i
不区分大小写
grep -ni
显示行数 不区分大小写
grep -v
显示剩余的内容
查看占用资源情况
ps -au
占用的资源
ps ef
查看所有的进程
ps -aux
查看系统中所有的进程数据
ps -ef|grep liu
查看与liu相关的进程
file命令
用于判断file命令后的文件的基本数据
file test.txt
改变文件的属性与权限
chgrp
:改变文件所属群组
chown
:改变文件拥有者
eg:chown root:liushuping(拥有者:群组) file.txt
改变文件的拥有者和群组
chmod
:改变文件的权限
各个权限对照表r4 w2 e1
chmod -rw------ test.txt
chmod 600 test.txt
X 权限是执行的意思 表示可以进入这个目录
du 查看使用空间
du -h
以易读的方式显示空间
fdisk是linux的磁盘分区表操作工具
gcc命令
linux下执行一个可执行文件的四个步骤
预处理-编译-汇编-链接
- 预处理
g++ -E test.cpp -o test.i
- 编译
g++ -S test.i -o test.s
- 汇编
g++ -c test.s -o test.o
- 链接
g++ test.o -o test
简单的指令
g++ test.cpp -o test
shell教程
shell是一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统的内核服务。
shell脚本 可以在脚本中执行命令行 命令
新建一个shelltest.sh的脚本 chmod 修改可执行文件的权限
vim shelltest.sh
chmod 777 shelltest.sh
#!/bin/bash
cd /opt/software
mkdir leecode
touch file1.txt
./shelltest.sh
解释: 进入/opt/software 在其中新建一个leecode文件夹,并建立一个file1.txt文件
- BASH
bash是绝大多数Linux系统默认的shell
$! /bin/bash
echo "helloworld"
#!
是一个约定的标记,告诉系统这个脚本需要什么解释器来执行
echo
像窗口输出文本
2. shell变量
- 局部变量
- 环境变量
- shell变量
shell 字符串
you_name="liushuping"
unset you_name #删除变量
m_name="zhangsan"
str="lala\"${m_name}\"!\n"
echo ${you_name}
echo "helloworld!"
echo -e $str
~
双引号的优点
- 可以有变量
- 可以出现转义字符
-
获取字符串的长度
echo ${#m_name}
-
提取字串
echo ${m_name:1:4}
-
数组
array[0]=1;
array[1]=2;
array[2]=3;
array[3]=4;
echo ${array[2]} #读取数组2的元素
echo ${#array[*]} #读取全部
shell基本运算符
expr
是一款表达式计算工具,使用它能完成表达式的求值操作
- 表达式和运算符之间要有空格,2 + 2
- 完整的表达式要被
#! /bin/bash
a=10
b=20
val= `expr $a + $b`
echo "a+b:$val"
val=`expr $b - $a`
echo "a-b:$val"
远程登录
- linux服务器是开发小组共享
- 正式上线的项目运行在公司
远程操作 Xshell 远程文件传输 Xftp
Xshell 远程登陆登录到Linux操作的软件
强大的安全终端模拟软件,支持ssh1 ssh2
远程登录到linux服务器
- VMware登录centos 打开终端
ifconfig
查看linux 地址
ping 192.168.xxx
测试
2. 打开Xshell输入 域名地址(192.168.xxx)
用户名 密码
vim编辑器
一般模式下
命令 | 功能 |
---|---|
h | 左 |
j | 上 |
k | 下 |
l | 右 |
yy | 复制 |
4yy | 复制四行 |
4dd | 删除4行 |
p | 粘贴 |
/hello | 查找hello |
n | 对查找切换 |
set nu | 显示行号 |
set nonu | 隐藏行号 |
G | 末行 |
gg | 首行 |
u | 撤销 |
:sp | 上下分屏 |
:vsp | 左右分屏 |
Ctrl + ww | 切屏 |
Ctrl + v | 块选择 |
gg=G | 自动缩进 |
set autoindent | 自动缩排 |
多文件编辑
vim name1 name2 name3
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出所有文件
linux账户管理
linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
跟使用者帐号有关的有两个非常重要的文件,一个是管理使用者 UID/GID重要参数的 /etc/passwd
,一个则是专门管理密码相关数据的 /etc/shadow
/etc/group
/etc/passwd
中有几行就代表几个账号
root:x:0:0:root:/root:/bin/bash
七个字段 账号名称:密码:UID:GID:使用者信息说明栏:主文件夹:shell
添加用户
useradd -d /home/test king
添加一个名称为king在/home/test目录下
添加用户到指定的组
useradd -g zkhx lisi
将lisi添加到zkhx这个组里面
指定/修改密码
passwd 用户名
删除用户
userdel 用户名
删除用户 保留家目录
删除用户 不保留家目录
userdel -r tom
查询用户信息
id liushuping
当前登录用户
whoami
转换组
# usermod -g ali zhangsan
转换zhangsan到ali这个组
用户组
类似于角色,系统对有共性的多个用户进行统一的管理
- 新增组
groupadd
进程管理
每个执行的程序都叫做进程,每个进程都有PID
程序run之后 会加载到内存 就成为一个进程
程序是一个静态的概念 进程是一个动态的概念
后台(Mysql tomcat) 前台
一般系统的服务器以后台进程的方式存在,而且常驻系统中,直到关机结束
ps -aux 查看进程详细信息
a 显示当前终端的所有进程信息
u 以用户的合适显示进程信息
x 显示后台进程运行的参数
TTY 终端机号
STAT 进程状态 s 代表休眠 r代表正在运行状态
ps -ef以全格式显示当前进程
-e 全部进程 -f以全格式
终止进程 kill和killall
kill + 进程号
(通过进程号终止进程)
killall + 进程名
(所以子进程也将终止)
kill -9
强制中止进程
pstree 进程树
pstree -p
显示进程的pid
pstree -u
显示进程用户
服务管理
服务(service) 本质就是进程,但是运行在后台,通常都会监听某个端口,等待其他程序的请求,比如(mysql,sshd,防火墙等)守护进程
service管理指令
start stop restart reload status
centos7以后很多服务用 systemctl
查看服务名
ls -l /etc/init.d/
setup (所有系统服务)
服务运行级别(runlevel)
0:系统停机状态
2
3:多用户状态 无界面
4:
5:图形界面
开机的流程
开机->BIOS->/boot->systemd进程号为1->运行级别->运行级别
修改centos静态ip
root权限下
vim /etc/sysconfig/network-scripts/ifcfg-ens33
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N4EnrXf0-1676552811367)(./img/%E9%9D%99%E6%80%81%E5%9C%B0%E5%9D%80.png)]
将箭头的部分改成static
设置主机名
vim /etc/hostname
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yeoZnthd-1676552811370)(./img/%E5%86%85%E7%BD%91%E9%80%9A%E6%88%AA%E5%9B%BE20220708141148.png)]
配置linux主机名称映射hosts文件
vim /etc/hosts
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VIgBVcQ1-1676552811372)(./img/hosts.png)]