Linux相关

1、Linux的体系结构

Linux相关_第1张图片

  • 体系结构主要分为用户态(用户上层活动)和内核态。
  • 内核:本质是一段管理计算机硬件设备的程序。
  • 系统调用∶内核的访问接口,是一种能再简化的操作。
  • 公用函数库:系统调用的组合拳(系统调用封装)。
  • Shell:命令解释器,可编程。
man 2 syscalls    //查看所有的系统调用说明
man 3                //系统的库函数
ls -lrt        //
which ls    //

cat 
less
more

vim
echo $SHELL    //当前shell版本
cat /etc/shells    //本机支持的shell版本
chsh -s /bin/dash    //切换到上面查询到的shell版本

2、如何查找特定的文件(Find)

Find:在指定目录下查找文件

find path [options] params

使用:

find -name "test.java"       #	在当前目录下查到test.java文件
find / -name "test.java"     #	从根目录开始查到test.java文件
find ~ -name "test*"         #	从用户目录下,找到以test开头文件
find ~ -iname "test.java"    #	从用户目录下,找到test.java文件(忽略大小写)

3、检索文件内容(grep)

grep [options] pattern file
  • 全称:Global Regular Expression Print。
  • 作用:查找文件里符合条件的字符串。
grep "start" test*    //从test开头文件中,查找含有start的行

管道操作符 |

  • 可将指令连接起来,前一个指令的输出作为后一个指令的输入

Linux相关_第2张图片

find ~ |grep "test"
find ~                //查找当前用户所有文件
grep "test"            //从文件中

使用管道注意的要点

  • 只处理前一个命令正确输出,不处理错误输出。
  • 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
  • sed,awk,grep,cut,head,top,less,more,c,join,sort,split等
grep 'error' email.log            #	从email.log文件中查询包含error的行
grep 'error' email.log | grep -o '\[0-9\]' #	获取到error的行,并取[]含有数字的内容
ps -ef|grep tomcat |grep -v        #	并过滤掉含有当前进程

4、对文件内容做统计(awk)

awk  [options]  'cmd'  file
  • 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分。
  • 将切片直接保存在内建的变量中,$1,$2…($0表示行的全部)。
  • 支持对单个切片的判断,支持循环判断,默认分隔符为空格。
  • -F 指定分隔符(默认为空格)

Linux相关_第3张图片

// 将email.out进行切分,打印出第1/3列内容
awk '{print $1,$3}' email.out        
// 将email.out进行切分,当第1列为tcp,第2列为1的列,全部打印。
awk '$1=="tcp" && $2==1{print $0}' email.out
//在上面的基础上将表头进行打印(NR表头)
awk '($1=="tcp" && $2==1)|| NR==1 {print $0}' email.out

//以,为分隔符,切分数据,并打印第二列的内容
awk -F "," '{print $2}' test.txt

将日志中第1/3列进行打印,并对第1列的数据进行分类统计

awk '{print $1,$3}' email.out
| awk '{count[$1]++} END {for(i in count) print i "\t" count[i]}'

请添加图片描述

Linux相关_第4张图片

5、批量替换文件内容(sed)

sed [option] 'sed commond' filename
  • 全名Stream Editor,流编辑器
  • 适合用于对文本行内容进行处理
  • sed commond为正则表达式
  • sed commond中为三个/,分别为源内容,替换后的内容
sed -i 's/^Str/String/' replace.java 

Linux相关_第5张图片

将末尾的.替换为;(转义.)

sed -i 's/\.$/\;/'

全文将Jack替换为me(g是全部替换,不加只替换首个)

sed -i 's/Jack/me/g/ replace.java

删除replace.java中的空格(d是删除)

sed -i '/^ *$/d' replace.java

删除包含Interger的行(d是删除)

sed -i '/Interger/d' replace.java

6、lsof

查看某一端口的占用情况

lsof -i:8080

7、netstat

netstat 命令用于显示各种网络相关信息,如网络连接, 路由表, 接口状态等等;
列出所有处于监听状态的tcp端口:

包括 PID 和进程名称

netstat -tulpn

查看指定端口号占用的TCP网络连接情况

netstat -tunlp|grep 8080

8、jstack

根据PID,查看JVM中各线程信息('0x9eb’为nid值)

jstack 2246|grep '0x9eb' -A 50

9、实时查看文件后几行(实时查看日志)

tail -f a.java        查看a.java文件的后10行内容;

10、unzip

unzip file1.zip             解压一个zip格式压缩包
zip -r lib.zip lib/            将目录进行压缩(lib.zip)
zip -r lib.zip tomcat-embed.jar xml-aps.jar        将多个文件压缩为zip文件(lib.zip)    

11、docker常用命令

#1、查看docker中下载好的镜像:
docker images
#2、查询需要的容器名称:
docker search mysql
#3、将需要的docker容器下载运行到本地(名称、端口号、msyql密码、ID):
docker run -di --name=first -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root 26d26dsfsd31a
#4、查看运行的docker容器:
docker ps
#5、查看所有的docker容器(包括未运行的):
docker ps -a
#6、停止当前运行的docker容器:
docker stop first
#7、启动docker容器:
docker start first
#8、重启docker容器:
docker restart first
#9、删除docker容器:
docker rm first

更新yum

sudo yum update

安装docker

sudo yum install docker

查看docker版本

docker -v

Docker version 1.13.1, build 0be3e21/1.13.1
启动docker

systemctl start docker
systemctl restart  docker
systemctl stop docker

查看docker是否启动

docker ps -a

搜索Redis镜像

docker search redis

12、查看当前目录所占存储

du -sh    			//查看当前文件夹所占存储空间
du --max-depth=1    //只查看当前目录下文件占用的存储空间
df -h            	//查看系统硬盘使用情况

13、Linux内核优化

打开配置文件

vim /etc/sysctl.conf

14、用户操作

添加用户sum:

useradd –d /usr/sum -m sum

关于useradd的某些参数:

-u: 指定 UID,这个 UID 必须是大于等于500,并没有其他用户占用的 UID

-g: 指定默认组,可以是 GID 或者 GROUPNAME,同样也必须真实存在

-G: 指定额外组

-c: 指定用户的注释信息

-d: 指定用户的家目录

已创建的用户sum设置密码

passwd sum

用户添加root权限

visudo

找到root用户权限位置
添加与root用户相同权限

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
eses    ALL=(ALL)       ALL

在这里插入图片描述

新建的用户在面显示

cat /etc/passwd

反反复复

切换下刚才添加的用户

su sum

sum: x:1000:1000:: /usr/sum :/bin/bash
sum: x:0:1000:: /usr/sum :/bin/bash

回到root用户

exit

修改已有用户信息usermod

usermod 选项 用户名

Linux相关_第6张图片

删除用户文件夹

rm -rf /usr/sum

删除用户sum

userdel sum

Linux相关_第7张图片

15、添加组

添加用户组

groupadd groupname

Linux相关_第8张图片
修改用户组
使用者权限:管理员用户

groupmod 选项 用户组
groupmod  -n new-usergroup  usergroup

常用的选项有:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字
    Linux相关_第9张图片

删除用户组

groupdel groupname

可以看到自己的分组和分组id

cat /etc/group

16、sudo用户权限操作

比如我们使用普通用户操作用户或者操作用户组、以及修改网卡配置文件的时候,需要切换到root用户才操作,此时我们可以使用sudo命令提高普通用户的操作权限,以达到操作目的

sudo:控制用户对系统命令的使用权限,root允许的操作。
通过sudo可以提高普通用户的操作权限。
使用者权限:普通用户

使用root用户权限执行命令,操作

sudo -s
sudo   vi /etc/sysconfig/network-scripts/ifcfg-ens33 

Linux相关_第10张图片

17、更换文件所有者

格式:

chown [-R] 所有者 		文件或目录
chown [-R] 所有者:所属组 	文件或目录

kibana-8.3.3-linux-x86_64.tar.gz所有者改为用户sum

chown -R sum /usr/sum/kibana-8.3.3-linux-x86_64.tar.gz

kibana-8.3.3-linux-x86_64.tar.gz所有者改为用户sum、所有组改为sum

chown -R sum:sum /usr/sum/kibana-8.3.3-linux-x86_64.tar.gz

你可能感兴趣的:(面试整理,linux,服务器,运维,面试)