Linux严格区分大小写

一、基础命令

清屏快捷键 ctrl + L

日常操作命令

  • history 10 命令 查看最近10个操作命令
    linux下用 ctrl +r 快速搜索历史命令
  • 查看登录时间 w
  • 登录信息 last
  • 查看系统开机时间 uptime
  • 给命令起别名 alias kubectlxxx='kubectl --namespace xxxx'
  • watch命令
    watch可以帮你监测一个命令的运行结果
    -n或—interval watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。
    -d或—differences 用-d或—differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
    -t 或-no-title 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。

关于时间命令

  • date 显示时间
  • date -d today +"%Y-%m-%d %H:%M:%S"
  • 同步更新系统时间
  • 查看系统硬件时间 hwclock
  • 格式化输出运行时间
    cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'

文件及目录处理命令

目录

  • 递归创建目录mkdir -p <目录名> 强制删除目录rm -rf <filename>
  • 显示当前目录pwd
  • 拷贝目录cp -r /opt/source /opt/a/source剪切/重命名mv / /
  • sudo ln -s 源文件 目标文件为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
  • mount它用于挂载Linux系统外的文件 将 /dev/hda1 挂在 /mnt 之下。
    #mount /dev/hda1 /mnt

文件命令
$ touch file #创建一个名为 file 的文件,touch是一个命令

压缩命令

  • 压缩tar.gz解压
    解压:$ tar zxvf FileName.tar.gz
    压缩:$ tar zcvf FileName.tar.gz DirName
    更多压缩格式
    zcat显示压缩包中文件的内容

文件搜索命令

  • 1.文件搜索命令locate搜索速度快
    在数据库中搜索,不是实时更新,每天更新一次,强制更新数据库updatedb
  • 2.文件搜索命令find,强大,效率低
    完全匹配:find /opt -name 'test*'
    不区分大小写find /opt -iname -user root install.log
    模糊查询需要通配符*匹配任意字符,?匹配一个字符,[]匹配任意一个中括号内的内容
  • 3.命令搜索命令whereis(搜索系统命令位置)与which whereis cat
  • 4.字符串搜索命令grep,使用正则表达式匹配,包含匹配
    搜索文件中包含字符串的行grep "size" install.log
    取反grep -v "size" install.log
    忽略大小写-i
  • 5.find与grep区别
  • 6.命令ls 能够使用通配符(查看网卡名)
    ls /etc/sysconfig/network-scripts/ifcfg* | grep -v 'lo' | grep -v '.bak'

文本处理(字符串处理)(查看日志)

  • head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
    实例1:显示文件的前n行head -n 5 log2014.log
    实例2:显示文件前2个字节head -c 20 log2014.log
  • cat 其中 cat 为正序显示,tac 为倒序显示。
  • tail
    tail file (显示文件file的最后10行)
    tail +20 file (显示文件file的内容,从第20行至文件末尾)
    tail -c 10 file(显示文件file的最后10个字符)
    tailf跟踪日志文件增长,作用跟tail –f相同。tailf将输出文件的最后10行,然后等待文件增长。
  • awk是行处理器,通常用来格式化文本信息
    sed(Stream EDitor)功能和awk一样,都是用来处理文本的,但是sed没有awk的功能强大,awk对列操作十分方便。
    详解连接
  • grep命令用于查找文件里符合条件的字符串
    grep [-abcEFGhHilLnqrsvVwxy][-d<进行动作>][-e<范本样式>][-f<范本文件>][—help][范本样式][文件或目录…]
    grep -C 5 foo file 显示file文件中匹配foo字串那行以及上下5行
    grep -B 5 foo file 显示foo及前5行
    grep -A 5 foo file 显示foo及后5行
  • cut命令详解
    https://www.cnblogs.com/Spiro-K/p/6361646.html

格式化处理json jq
https://www.cnblogs.com/yjt1993/p/10028089.html

网络传输相关命令

  • 查看ip命令:ifconfig=ip addr
  • 防火墙开启端口firewall-cmd --add-port=8010/tcp;
    //firewall-cmd --zone=public --add-port=8010/tcp --permanent
    需要重新载入firewall-cmd --reload
  • 查看firewall-cmd --zone= public --query-port=80/tcp
  • 删除firewall-cmd --zone= public --remove-port=80/tcp --permanent
  • 解决ifconfig不能用问题:点击查看
  • 网速sar -n DEV 1 100 // 1代表一秒统计并显示一次 100代表统计一百次
    sar命令详解地址
  1. systemctl start firewalld # 启动
  2. systemctl status firewalld # 或者 firewall-cmd --state 查看状态
  3. systemctl disable firewalld # 停止
  4. systemctl stop firewalld # 禁用
  5. # 关闭服务的方法
  6. # 你也可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下:
  7. systemctl stop firewalld
  8. systemctl disable firewalld
  9. yum install iptables-services
  10. systemctl start iptables
  11. systemctl enable iptables
  12. #重新载入
  13. firewall-cmd --reload

curl url 发请求

  1. curl -o index.html url 把请求结果放到网页里面去
  2. curl -i url 显示相应头信息
  3. curl -v url 显示请求过程
  4. curl -X GET/DELETE url
  5. 发送数据时,不仅可以使用 POST 方式,也可以使用 GET 方式,例如:
  6. curl -d somedata -X GET http://www.example.com/api
  1. curl -H "Content-Type:application/json" -H "Data_Type:msg" -X POST --data '{"dmac": "00:0C:29:EA:39:70", "alert_type": "alarm", "risk": 2, "trojan_name": "Trojan.qq3344", "smac": "00:0C:29:EA:39:66", "sub_alert_type": "trojan", "sport": 11, "id": "153189767146", "desc": "NoSecure 1.2 \u6728\u9a6c\u53d8\u79cd4\u8fde\u63a5\u64cd\u4f5c", "sip": "62.4.07.18", "dip": "139.82.31.91", "rule_id": 123451, "trojan_type": 4, "time": "2018-07-18 15:07:51", "dport": 61621, "detector_id": "170301020011", "os": "Windows", "trojan_id": 50030}' http://127.0.0.1:5000/service
  • 查看端口被占用netstat命令已经废弃了一段时间。因此,你需要使用ss命令
    Socket Statistics的缩写,查看更多
    其中ss命令选项如下:
    -t : 只显示Linux上的TCP套接字
    -u : 在Linux上只显示UDP套接字
    -l : 监听套接字。例如,TCP端口22由SSHD服务器打开。
    -p : 列出打开套接字的进程名
    -n : 不要解析服务名称,即不要使用DNS

netstat -na|wc -l

远程传输
scp 用于在Linux下进行远程拷贝文件的命令 复制目录:
命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
从远程服务器复制到本地服务器:
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
实例1:从远处复制文件到本地目录
命令:scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

RPM软件包的管理工具

  • 卸载rpm软件包 rpm -e
  • 列出所有安装包rpm -qa
  • 安装软件:rpm -ivh rpm包名

yum的使用

为了提高RPM 软件包安装性而开发的一种软件包管理器

  1. yum install xxx 安装xxx软件
  2. yum info xxx 查看xxx软件的信息
  3. yum remove xxx 删除软件包
  4. yum list 列出软件包
  5. yum clean 清除缓冲和就的包
  6. yum provides xxx xxx为关键字搜索包(提供的信息为关键字)
  7. yum search xxx 搜索软件包(以名字为关键字)

统计个数

wcLinux wc命令用于计算字数。
-c或–bytes或–chars 只显示Bytes数。
-l或–lines 只显示列数。
-w或–words 只显示字数。

进程相关

psProcess Status 将某个进程显示出来
ps auxps -ef 两者的输出结果差别不大,但展示风格不同
top 动态的显示进程信息
kill用于杀死进程

top命令输出到文件
#top -b -n 2 -d 3
-b: batch 模式,可以重定向到文件中
-n:一共取2次top数据
-d:每次top数据间隔为3秒
top -Hp pid 可以显示所有的线程
VIRT 表示 Virtual Memory 虚拟内存
RES 表示 Resident Memory 驻留内存
SHR 表示 shared memory 共享内存
RES 表示 进程占用的 物理内存数,实际使用数,而非申请的内存数

查看进程及端口号 nstat -tunlp

系统及硬件相关

磁盘管理

磁盘空间 df -lh
Used:已经使用的空间
Avail:可以使用的空间
Mounted on:挂载的目录

  • 查看内核信息 uname -a
  • 修改主机名 centOS7不好修改需要另外查询
  • 查看cpu信息
    总核数 = 物理CPU个数 X 每颗物理CPU的核数
    总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
    查看物理CPU个数
    cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l
    查看每个物理CPU中core的个数(即核数)
    cat /proc/cpuinfo| grep “cpu cores”| uniq
    查看逻辑CPU的个数
    cat /proc/cpuinfo| grep “processor”| wc -l
    查看CPU信息(型号)
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
  • 查看内存
    free 或者 cat /proc/meminfo
    free详解

邮件|计算器

邮件配置 /etc/main.rc
发送邮件 echo "内容" | mail -s "标题" zhaojy@***.com.cn

bc

二、文件目录结构

  • Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
  • Linux 里面一切皆文件

一级目录规范:
/根目录

/bin和/sbin和/usr/bin和/usr/sbin保存命令的目录(普通用户读取的命令)sbin是超级用户的命令
/etc配置文件保存目录(/etc/profile)/etc/rc.d 启动的配置文件和脚本
/home普通用户家目录
/root超级用户家目录
/tmp临时目录
/var系统相关文档目录

/usr:系统软件资源目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。
/usr/local:用户级的程序目录,可以理解为C:/Program Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
源码放哪里?
/usr/src:系统级的源码目录。
/usr/local/src:用户级的源码目录。

/proc直接写入内存
/boot启动目录
/dev设备文件保存目录
/lib系统库保存目录
/mnt系统挂载目录
/media挂载目录

三、用户及权限问题

3.1 用户相关

3.1.1 who命令

who -m 打开当前伪终端的用户的用户名
第二列的 pts/0 中 pts 表示伪终端,0表示第一个伪终端

  1. [root@master01 ~]# who -m
  2. root pts/5 2019-11-18 14:22 (103.219.186.220)

在这里插入图片描述 =300x280)

3.1.2 root用户

root账户拥有整个系统至高无上的权利

切换到root用户su - rootsu -
符号”-“告诉系统在切换到root用户的时候初始化root的环境变量
在这里插入图片描述 =900x150)
sudo 命令。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。

su 可以切换到用户 user,执行时需要输入目标用户的密码,sudo 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码。su - 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量。

3.1.3 用户命令

添加用户 sudo adduser lilei
给用户设置密码 sudo passwd shiyanlou

3.1.4 用户组

在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源,就跟家的形式差不多
如何知道自己属于哪些用户组 groups rootcat /etc/group | sort

这里我用 shiyanlou 用户执行 sudo 命令将 lilei 添加到 sudo 用户组,让它也可以使用 sudo 命令获得 root 权限:

  1. su shiyanlou # 此处需要输入 shiyanlou 用户密码
  2. groups lilei
  3. sudo usermod -G sudo lilei
  4. groups lilei

删除用户
sudo deluser lilei --remove-home

3.2 文件权限

linux基础 - 图3

linux基础 - 图4

权限命令☆☆☆☆

曾经因为权限命令掉坑爬不出,所以画个重点
1.chmod命令用来变更文件或目录的权限
chmod [ugoa…][[+-=][rwxX]…] filename
u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;

+表示增加权限、-表示取消权限、=表示唯一设定权限。

r 读取权限,数字代号为“4”;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。

-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

举例
1.将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt = chmod ugo+r file1.txt
2.
chmod a=rwx file = chmod 777 file
其中7,7,7各为一个数字,分别表示User、Group、及Other的权限。
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
2.chown命令

  1. 用户:[组]
  2. chown runoob:runoobgroup file1.txt
  3. chown -R runoob:runoobgroup *

四、shell 及脚本

常见的 Shell 有 bash、zsh、ksh、csh 等等,Ubuntu 终端默认使用的是 bash

定义变量

注意,赋值号=的周围不能有空格,这可能和你熟悉的大部分编程语言都不一样。
将两个字符串并排放在一起就能实现拼接

shell读取csv

  1. while read line
  2. do
  3. OLD_IFS="$IFS"
  4. IFS=","
  5. arr=($line)
  6. IFS="$OLD_IFS"
  7. echo "${arr[0]},${arr[1]},${arr[2]}"
  8. done < test.csv

命令行解释器/功能强大的编程语言(解释执行)
用户通过shell操作linux内核

第一个shell test.sh

  1. #!/bin/bash
  2. while getopts l:h:f: option
  3. do
  4. case "$option" in
  5. l)
  6. echo "l 参数的值为: $OPTARG";
  7. list=$OPTARG;
  8. echo "-------------------------------------------------------------------------------------";;
  9. f)
  10. echo "f 参数的值为: $OPTARG";
  11. file=$OPTARG;
  12. echo "-------------------------------------------------------------------------------------";;
  13. h)
  14. echo "h 参数的值为: $OPTARG";
  15. host=$OPTARG;
  16. echo "-------------------------------------------------------------------------------------";;
  17. \?)
  18. echo "Help Document: args [-l str] [-i str] [-o str]"
  19. echo "-l is the list what you want send data"
  20. echo "-f is file"
  21. exit 1;;
  22. esac
  23. done

1.chmod +x ./test.sh #使脚本具有执行权限
./test.sh#执行脚本
2.sh test.sh

shell循环控制

  1. a=10
  2. b=20
  3. if [ $a == $b ]
  4. then
  5. echo "a 等于 b"
  6. elif [ $a -gt $b ]
  7. then
  8. echo "a 大于 b"
  9. elif [ $a -lt $b ]
  10. then
  11. echo "a 小于 b"
  12. else
  13. echo "没有符合的条件"
  14. fi

for循环

  1. for loop in 1 2 3 4 5
  2. do
  3. echo "The value is: $loop"
  4. done

while

  1. #!/bin/bash
  2. int=1
  3. while(( $int<=5 ))
  4. do
  5. echo $int
  6. let "int++"
  7. done

实例

1.同步多个服务器时间

  1. # 从2到6循环填入,再更新时间
  2. for i in `seq 2 6`
  3. do
  4. ssh 192.168.1.10$i ntpdate 192.168.1.99
  5. done

时间同步命令ntpdate https://www.cnblogs.com/zhi-leaf/p/6281549.html

2.获取ip地址

  1. netscript=`ls /etc/sysconfig/network-scripts/ifcfg* | grep -v 'lo' | grep -v '.bak'`
  2. netname=${netscript#*/etc/sysconfig/network-scripts/ifcfg-}
  3. ip=`nmcli dev show ${netname} | grep IP4.ADDRESS | awk '{print $2}' | awk -F '/' '{print $1}' | grep '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*'`
  4. echo $ip

3.将脚本授予全局环境变量

linux基础 - 图5

4.环境变量文件

/etc/profile

五、管道,重定向

>
>>
|

六、

七、centos7开机自启

开机自启:
1、赋予脚本可执行权限(/opt/script/StartTomcat.sh是你的脚本路径)
# chmod +x /opt/script/StartTomcat.sh
2、打开/etc/rc.d/rc.local文件,在末尾增加如下内容
echo “/opt/script/StartTomcat.sh” >> /etc/rc.d/rc.local
3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local

八、修改centos7 ip地址

https://blog.csdn.net/weixin_41278231/article/details/80521619

九、linux下定时任务crontab

  1. cd /var/spool/cron/

查看定时任务crontab -l
编辑定时任务vi root

举例:定时执行脚本 - root文件内容

  1. 1 1 * * * /bin/sh /usr/local/bin/scripts/esClearIndex.sh &
  2. 1 0 * * * /bin/sh /usr/local/bin/vacuum_full_testdb.sh

十、环境变量

当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。

  1. declare tmp
  2. tmp=shiyanlou
  3. echo $tmp