Linux

一文看懂Linux内核

常用命令

/

|---- bin 存放用户二进制文件

|---- boot 存放内核引导配置文件

|---- dev 存放设备文件

|---- etc 存放系统配置文件

|---- home 用户主目录

|---- lib 动态共享库

|---- lost+found 文件系统恢复时的恢复文件

|---- media 可卸载存储介质挂载点

|---- mnt 文件系统临时挂载点

|---- opt 附加的应用程序包

|---- proc 系统内存的映射目录,提供内核与进程信息

|---- root root用户主目录

|---- sbin 存放系统二进制文件

|---- srv 存放服务相关数据

|---- sys sys虚拟文件系统挂载点

|---- tmp 存放临时文件

|---- usr 存放用户应用程序

|---- var 存放邮件,系统日志等变化文件


mv 123.txt 321.txt  重命名文件

cp:复制文件

rm:删除

ln -s source.txt target_link.txt  创建链接文件(软链接)

ln source.txt target_link_2.py  创建链接文件(硬链接)

find ./ -name xxx.txt  查找当前目录下匹配的文件名

          -size 2M 查找当前目录下匹配大小的文件

find ./ -name "NEA???" -type d -print

find ./ -name '*test*' -exec dirname {} \; | uniq

find ./ -type f -mtime +10 | xargs \rm

find ./ -mtime +30 -name "*.txt" -exec rm -rf {} \;

find ./ -type f -name "*txt" -delete

whereis 参数 服务名:搜索二进制文件-b,man说明文件-m,源码文件-s

locate /etv/sh:搜索etc下所有sh开头的文件

which ls:查找ls命令的可执行文件

whatis ls:查看ls的介绍及使用简要


cut -d '/' -f 2 字符串切割,以‘/’为分隔符,取第二个字段

wc -c(字节数) -l(行数) -w(字数)  内容统计命令

grep -iv:忽略大小写,不含该串

awk -F , '{print $1,$2}' log.txt:以,分隔log.txt的内容,取1,2项

sed -i ':a;N;$!ba;s/\n//g' filename  /替换文件中所有换行


tar -cvf test.tar *.py 打包

tar -xvf test.tar  解包

gzip -r test.tar test.tar.gz  压缩(gzip test.tar)

gzip -d test.tar.gz

tar -jcvf xxx.tar.bz2  打压缩包

tar -jxvf xxx.tar.bz2 -C ./test…  解压缩包

xz -z 要压缩的文件 (tar.xz文件)

xz -d 要解压的文件

zip myzip *.*  打rar包

unzip -d test myzip.zip  解rar包


sudo -s

du -a:目录或文件占磁盘大小

df -hl:看磁盘占用空间

repquota:显示出一个文件系统的配额信息

ntpdate -u xxx.xxx.xxx.xxx


jobs -l:查看运行的后台进程;fg %jobnumber:将后台命令调至前台继续运行;bg jobnumber:将后台暂停的命令变成后台继续运行;ctrl+z:将前台正在执行的命令放到后台,并处于暂停状态;

ps -elf:查看正在运行的进程;D不可中断睡眠,R正在运行或可运行,S可中断睡眠,T已停止的进程收到sigstop,sigstp,sigtin,sigtou信号后停止运行,X死进程,Z僵尸进程

chage -l 用户组 查看下情况;chage -M 99999 www,对www用户组密码期限做了修改,其中99999代表永久


showkey -a:查看按键对应的字符序列

compgen -c:可以打印出所有支持的命令列表

disown -r:可以将所有正在运行的进程移除

hash:打印出你所使用过的命令以及执行的次数


useradd dreamlee -m /home/dreamlee 添加用户

passwd laowang 给用户设置密码

cat /etc/passwd 查看系统当前用户名

userdel -r laowang 删除用户

cat /etc/group 查看有哪些用户组

groupmod 加两次tab键

groupadd -g 7100 hadoopgroup

useradd -u 7100 -g hadoopgroup hadoopuser

groupdel www

groups laowang 查看用户所属的用户组有哪些

usermod -g AAA laowang 修改用户所在组(默认组)

usermod -a -G BBB laowang 增加用户的用户组

chmod 修改文件权限

chmod u(goa)+(-=)w(rx) 1.py

chmod 421 1.py

chown 修改文件所有者

chown bingbing 1.py

chgrp 修改文件所属组

添加用户到wheel用户组:useradd opsuser -G wheel;vim /etc/pam.d/su

sudo命令操作: root用户执行visudo,添加opsuser  ALL=(root)  NOPASSWD:/bin/su    执行sudo su登录root用户

查看Linux内核版本命令:cat /proc/version;uname -a

查看Linux系统版本的命令:lsb_release -a;cat /etc/redhat-release;cat /etc/issue

输入“nmcli con show”命令查看网卡uuid即可


alias la='ls -a':对命令取别名

env:查看环境变量;shell中表示在一个修改后的环境里执行命令

nohup:不挂断地运行命令;一般用法nohup [command] &;

eval:会对后面的cmdline进行两遍扫描,如果第一遍扫描后,cmdline是个普通命令,则执行此命令,如果cmdline中含有变量的间接引用,则保证间接引用的语义。

let c=a+b:进行整型数的数学运算


修改时区timedatectl

timedatectl list-timezones# 列出所有时区

timedatectl set-local-rtc 1# 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间

timedatectl set-timezone Asia/Shanghai# 设置系统时区为上海

或者:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步NTP时间:ntpdate -u ntp.sjtu.edu.cn



磁盘挂载

查看未分区磁盘:fdisk -l

划分分区并格式化:fdisk /dev/vdb

格式化:mkfs.ext4 /dev/vdb1

挂载磁盘:mount /dev/vdb1 /home   #取消挂载 umount /home

开机自动挂载:编辑/etc/fstab文件,添加:/dev/vdb1 /home ext4 defaults 0  0  #0 0 表示开机不检查磁盘。

#查看磁盘uuid =====>>> ls -l /dev/disk/by-uuid/

##虚拟机新增加硬盘,不用重启读到新加的硬盘

# cd /sys/class/scsi_host/

# echo "- - -" > host0/scan

# fdisk -l

centos7扩容根目录(/dev/mapper/centos-root)

partprobe /dev/vdb 或者 partx -u /dev/vdb1 #任一命令通知内核更新分区表

e2fsck -f /dev/sdb1 # 检查文件系统

resize2fs /dev/sdb1 # 变更文件系统大小

mount -t cifs -o username=DELL,password=gsglpt //192.168.18.158/ManagementPlatform /mnt/share  --Linux访问Windows共享目录


shell判断

-e filename 如果 filename存在,则为真

-d filename 如果 filename为目录,则为真

-f filename 如果 filename为常规文件,则为真

-L filename 如果 filename为符号链接,则为真

-r filename 如果 filename可读,则为真

-w filename 如果 filename可写,则为真

-x filename 如果 filename可执行,则为真

-s filename 如果文件长度不为0,则为真

-h filename 如果文件是软链接,则为真

= 等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串

!=不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串

< 小于 应用于:整型比较 在[] 中,不能使用 表示字符串

> 大于 应用于:整型比较 在[] 中,不能使用 表示字符串

-eq 等于 应用于:整型比较

-ne 不等于 应用于:整型比较

-lt 小于 应用于:整型比较

-gt 大于 应用于:整型比较

-le 小于或等于 应用于:整型比较

-ge 大于或等于 应用于:整型比较

-a  双方都成立(and) 逻辑表达式 –a 逻辑表达式

-o  单方成立(or) 逻辑表达式 –o 逻辑表达式

-z  空字符串

-n  非空字符串

for循环使用参数:$0(这个程式的执行名字);$n(这个程式的第n个参数);$*(这个程式的所有参数,可超过9个);$#(这个程式 参数个数);$$(这个程式的PID);$!(执行上一个景指令的PID);$?(执行上一个命令的返回值);$-(显示shell使用的当前选项);$@(跟$*类似,但可以当作数组用)

使用linux命令dos2unix filename,直接文件转换unix格式


日志

# 日志颜色

COLOR_G="\x1b[0;32m"

COLOR_Y="\x1b[0;33m"

COLOR_R="\x1b[0;31m"

RESET="\x1b[0m"

DATE=`date +%F`

TIME=`date "+%Y-%m-%d %H:%M:%S"`

function info(){

  echo -e "${COLOR_G}[$TIME] [Info] ${1}${RESET}"

}

function warn()

{

  echo -e "${COLOR_Y}[$TIME] [Info] ${1}${RESET}"

}


fuser

echo "你被管理员踢出了" > /dev/pts/1 && fuser -k /dev/pts/1

配置ssh免密登录

#ssh-keygen -t rsa:生成ssh免密登录密钥

ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1

#ssh-copy-id [nodeIP]:将公钥复制到免密登录的目标机器上 ~/.ssh/authorized_keys

sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" $IP


截取字符串

注:匹配的内容为去掉的

获取字符串长度:${#str}

最小限度从前面截去:${str#*/}

最大限度从前面截去:${str##*/}

最小限度从后面截去:${str%/*}

最大限度从后面截去:${str%%/*}

0表示左边第一个字符开始,7表示子字符总个数:${str:0:7}

echo "xxx=xxx=xxxxx=xxxx" | awk -F '='  '{s="";for(i=2;i<=NF;i++)s=s""(i==NF?$i:$i"=");print s}'


开放/关闭端口号

文件:/etc/init.d/iptables;/etc/sysconfig/iptables

查看哪些端口号被打开:netstat -anp

打开23端口:nc -lp 23

端口访问量:netstat -nao|awk '{print $4}'|grep :8089|wc -l

查看带宽占用情况:iftop -i eth0 -P

-- 查找所有规则:iptables -L INPUT --line-numbers

-- 删除一条规则:iptables -D INPUT 11

iptables -I DOCKER -ptcp --dport 3306 -j DROP;

关闭:

iptables -A INPUT -ptcp --dport [端口号] -j DROP;

iptables -A OUTPUT -ptcp --dport [端口号] -j DROP;

开启:

iptables -A INPUT -ptcp --dport [端口号] -j ACCEPT;

iptables -A OUTPUT -ptcp --sport [端口号] -j ACCEPT;

保存设置:service iptables save

重启防火墙:service iptables restart

关闭防火墙开机启动:chkconfig iptables off


添加80端口的访问权限,这里添加后永久生效

        #firewall-cmd --zone=public --add-port=80/tcp --permanent

        #firewall-cmd --reload

查看80端口访问权限情况

      #firewall-cmd --zone=public --query-port=80/tcp

关闭80访问权限

      #firewall-cmd --zone=public --remove-port=80/tcp --permanent

将指定IP主机加入(删除)trusted域

    #firewall-cmd --permanent --zone=trusted --add-source=192.168.31.127

    #firewall-cmd --permanent --zone=trusted --remove-source=192.168.31.127

拒绝主机的所有网络连接(有回应/无回应)

    #firewall-cmd --permanent --zone=block --add-source=192.168.31.127

    #firewall-cmd --permanent --zone=drop --add-source=192.168.31.127


配置路由

route -n

route add -net 192.168.19.0 netmask 255.255.255.0 gw 192.168.18.1

route del -net 192.168.19.0 netmask 255.255.255.0 gw 192.168.18.1

配置静态路由static-routes

any net 192.168.3.0/24 gw 192.168.3.254

any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129 


rpmbuild制作RPM包

RPM包搜索

1.安装rpmbuild:

yum install rpmbuild

yum install rpmdevtools

rpmdev-setuptree

查看是否安装完成:rpmbuild --showrc|grep topdir

配置文件位置:/usr/lib/rpm/macros  %_topdir

2.rpmbuild目录

BUILD:编译rpm包的临时目录

BUILDROOT:编译后生成的软件临时安装目录

RPMS:最终生成的可安装rpm包的所在目录

SOURCES:所有源代码和补丁文件的存放目录

SPECS:存放spec文件的目录(重要)

SRPMS:软件最终的rpm源码格式存放路径

3.写spec文件

生成spec文件模板:rpmdev-newspec -o Name-version.spec

%prep:将%_sourcedir目录下的源码解压到%_builddir目录下。如果有补丁,需要在这个阶段进行打补丁操作

%build:在%_builddir目录下执行源码包的编译。一般是执行./confiure和make指令

%install:将需要打包到rpm软件包里的文件从%_builddir下拷贝到%_buildrootdir目录下。当用户最终用rpm -ivh name-version.rpm安装软件包时,这些文件会安装到用户系统中相应的目录里

制作rpm包:这个阶段是自动完成的,所以在SPEC文件里面是看不到的,这个阶段会将%_buildroot目录的相关文件制作成rpm软件包最终放到%_rpmdir目录里

%clean:编译后的清理工作,这里可以执行make clean以及清空%_buildroot目录等

4.打包

rpmbuild

-ba 既生成src.rpm又生成二进制rpm

-bs 只生成src的rpm

-bb 只生成二进制的rpm

-bp 执行到pre

-bc 执行到build段

-bi 执行install段

-bl 检测有文件没包含


关于IP地址

开启/关闭网卡:ifup ens33/ifdowm ens33

注意:在桥接模式下

cd  /etc/sysconfig/network-scripts/

其中“ifcfg-ens33”的文件,为我们需要修改的网络配置文件

BOOTPROTO=static

修改ONBOOT=“yes” 意思是将网卡设置 为开机启用

IPADDR=192.168.0.230 #静态IP

GATEWAY=192.168.0.1 #默认网关,在cmd中输入ipconfig/all,再查找;虚拟机是192.168.0.2

NETMASK=255.255.255.0 #子网掩码

vim /etc/resolv.conf的配置自动配置为如下图示:

$:hostnamectl set-hostname master

/etc/hosts文件内配置:192.168.200.128 master

这两步使得hostname -i返回结果为192.168.200.128

若出现ping不通域名的情况,则直接在/ect/syconfig/network-scripts/ifcfg-ens33里面添加:

DNS1=8.8.8.8

DNS2=114.114.114.114

centOS查看网卡UUID:nmcli con show


CPU负载过高的问题

1.定位进程:top -c 显示进程列表,输入P,按cpu使用率排序

2.定位线程:top -Hp [进程PID],输入P,找到哪个线程耗费cpu最高

3.定位代码:把线程pid转换成16进制,printf "%x\n" [线程PID]; jstack [进程PID] | grep '[16进制线程PID]' -C5 --color

4.查看网卡访问 iftop -i eth0


查看占用内存最高的进程:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head -n 10

linux下获取占用CPU资源最多的10个进程:ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head



查看linux机器版本

查看内核版本:cat /proc/version;uname -a;uname -r

查看系统版本信息:cat /etc/issue;cat /etc/lsb-release;lsb_release -a;cat /etc/redhat-release


vi vim

替换第n行开始到最后一行的每一个str为newstr -> :n,$s/str/newstr/g


运维工具




sed命令

进行文本替换工作。

常用符号

^:行首定位符

$:行尾定位符

.:匹配除换行外的单个字符

*:匹配0个或多个前导字符

[]:匹配制定字符组内任一字符

[^]:匹配不在制定字符组内任一字符

..:保存已匹配的字符

&:保存查找串以便在替换串中引用

<:词首定位符

>:词尾定位符

x{m}:连续m个x

x{m,}:至少m个x

x{m,n}:大于等于m个,小于n个x

常用选项

-n:使用安静模式。在一般sed的用法中,所有来自stdin的资料一般都会被列出到屏幕,但如果加上-n参数后,则只有经过sed特殊处理的一行(或者command)才会被列出来。

-e:允许多点编辑

-f:直接将sed的动作写在一个档案内,-f filename则可以执行filename内的sed动作

-r:sed的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)

-i:直接修改读取的档案内容,而不是由屏幕输出。

动作说明

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

d :删除,因为是删除啊,所以 d 后面通常不接任何东东;

i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

g:全局

示例

sed '2,5 s/old/new/' file ----分隔符有/#!,行寻址2到5行

sed -r 's/[0-9][0-9]$/&.5/' datafile ----&代表在查找串中匹配到的内容

sed -n '/root/,/nologin/ s/old/new/p' /etc/passwd ----找到root行或nologin行



awk命令



ELK

elasticsearch.yml

cluster.name: "docker-cluster"

network.host: 0.0.0.0

action.auto_create_index: true

#action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*

xpack.security.enabled: true

xpack.security.transport.ssl.enabled: true

http.cors.enabled: true

http.cors.allow-origin: "*"


kibana.yml

server.host: "0"

elasticsearch.hosts: [ "http://elastic_es:9200" ]

elasticsearch.username: "elastic"

elasticsearch.password: "elastic@PROD"

monitoring.ui.container.elasticsearch.enabled: true

i18n.locale: "zh-CN"


logstash.yml

http.host: "0.0.0.0"

xpack.monitoring.elasticsearch.hosts: [ "http://localhost:9200" ]

#xpack.monitoring.enabled: true

#xpack.monitoring.elasticsearch.username: "elastic"

#xpack.monitoring.elasticsearch.password: "elastic@PROD"

path.config: /opt/cloud/elastic/logstash-7.13.4/config/conf.d/

path.logs: /var/log/logstash

prod-mp-backend-log.conf

input {

  file {

    type => "mp-log"

    path => "/usr/local/pm_jeecg2.2/catalina.out"

    start_position => "beginning"

    stat_interval => "5"

  }

codec => multiline {

            pattern => "^\d+"

            negate => "true"

            what => "previous"

            charset => "UTF-8"

            auto_flush_interval => 3

        }

}

output {

  if [type] == "mp-log" {

    elasticsearch {

      hosts => ["http://localhost:9200"]

      index => "prod-mp-backend-log-%{+YYYY.MM.dd}"

      user => "elastic"

      password => "elastic@PROD"

    }

  }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351