目录
87.LANG // 系统变量 // Language的缩写
97.★★★ 实际应用 ★★★ 【if else】【字符串包含】【字符串比较】
96.time 查看命令性能 (不同于 windows 的time)
98.native2ascii (转换 \uXXXX unicode )
111.known_hosts 中 ssh-rsa 的值 是根据什么生成的
113.shell 中 ${0##*/} 是什么意思-----获取脚本文件的名称
116.特殊符号【^M】【 ^!】 等等这些转义字符,以及其含义
1.查看端口对应的进程 (Websphere Server)
8.在 AIX 系统中,如果没有安装 unzip 命令,可以尝试使用以下命令解压缩 Zip 文件:
10.查看字符对应的16进制编码 【od】 (linux 也能用)
16.svmon 【AIX中 类似 Linux系统中 free 的命令】
18.df【df】查看===文件系统===的=磁盘===使用情况,百分比
======
■Java常用知识总结
Java8新特性学习_001_(Lambda表达式,函数式接口,方法引用,Stream类,Optional类)_sun0322的博客-CSDN博客
■前言 (常用链接)
・Unix,Linux 介绍
初次安装Linux(Ubuntu)(ssh,ftp服务安装)_sun0322-CSDN博客 (介绍内容在文章底部)
・ 自己的用户
・ 常用目录
Linux中常用的目录(/home,/etc ,/opt)_sun0322-CSDN博客
・Linux服务器,性能测试相关
Linux系统性能相关知识学习_sun0322-CSDN博客
・Shell 自动化 处理相关 需要使用到的命令
shell自动化处理_相关知识整理(整理中)20210329_sun0322-CSDN博客
・TeraTerm相关操作
使用TeraTerm自带SSH SCP功能,传送文件_sun0322-CSDN博客
・硬链接(hard link)和软链接(soft link或symbolic link)
Linux系统中的硬链接(hard link)与软链接(symbolic link) - lemonning - 博客园
・ 更多命令
【Linux】一步一步学Linux系列教程汇总(更新中......)_嵌入式开发工程师---欢迎大家一起交流-CSDN博客_csdn dengjin
・ 常用bat命令
常用 doc bat 命令总结_sun0322-CSDN博客
・工作中使用的单词
https://blog.csdn.net/sxzlc/article/details/104872052
■编码思想
https://blog.csdn.net/sxzlc/article/details/116357487
每个命令行是个小工具,专注又单一,
但是可以通过管道的方式把他们连接起来,协同完成一个大任务,
这种设计理念是从一开始就植根到Unix当中的。
The UNIX Philosophy,提出了9条格言:
==============================
一:小即是美。
二:让程序只做好一件事。
三:尽可能早地创建原型。
四:可移植性比效率更重要。
五:数据应该保存为文本文件。
六:尽可能地榨取软件的全部价值。
七:使用shell脚本来提高效率和可移植性。
八:避免使用可定制性低下的用户界面。
九:所有程序都是数据的过滤器。
==============================
■编码规范
1.脚本格式要求
・脚本以#!/bin/bash开(关联(file):Linux中的file命令_sun0322-CSDN博客)
・脚本需要有可执行权限
2.Shell变量简介
・Linux Shell中的变量分为系统变量和用户自定义变量。
・系统变量:$HOME、$PWD、$SHELL、$USER等,比如echo $HOME
・显示当前shell中所有变量:set
3.shell变量的定义
(1)基本语法:
・定义变量:变量名=值
・撤销变量:unset 变量
・声明静态变量:readonly变量,注意,不能unset
(2)定义变量的规则:
・变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
・等号两侧不能有空格
・变量名称一般习惯为大写,这是一个规范,遵守即可。
(3)将命令的返回值赋给变量
・NAME=`date`反引号,运行里面的命令,并将结果赋给变量NAME
・NAME=$(date)等价于反引号
■shell脚本
变量说明:
$$
Shell本身的PID(ProcessID)
$!
Shell最后运行的后台Process的PID
$?
最后运行的命令的结束代码(返回值)
$-
使用Set命令设定的Flag一览
$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$#
添加到Shell的参数个数
$0
Shell本身的文件名
$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
快速入门Shell脚本(1)——Shell脚本的介绍
快速入门Shell脚本(1)——Shell脚本的介绍_大数据记录-CSDN博客
快速入门Shell脚本(2)——系统变量与自定义变量
快速入门Shell脚本(2)——系统变量与自定义变量_大数据记录-CSDN博客
快速入门Shell脚本(3)——条件判断语句与循环
快速入门Shell脚本(3)——条件判断语句与循环_大数据记录-CSDN博客_shell 判断语句
https://blog.csdn.net/sxzlc/article/details/107926752 (私密)
快速入门Shell脚本(4)——常用的函数操作
快速入门Shell脚本(4)——常用的函数操作_大数据记录-CSDN博客
■登陆用户
$表明是非root用户登录,#表示是root用户登录
sudo su - 之后,会变成 #
■内部变量
Linux中 大写的$PWD 与小写的 pwd 之间的区别 (变量 与 命令 的区别)_sun0322-CSDN博客_$pwd
■vi
■权限
Linux 命令 之 【chmod】 修改文件权限~_sun0322-CSDN博客
■ls -l 每一列的含义
linux下 ls -l 命令显示结果每一列代表什么意思 - 码农编程进阶笔记 - 博客园
■ls -l 文件类型
linux下的7种文件类型[ls -l] - 夏天就该吃西瓜 - 博客园
■循环处理
1.循环小火车
for ((c=1;c<=10;c++)); do sl; sleep 3; done
---
while true; do sl; sleep 3; done
---
2.循环cup性能
Linux系统性能相关知识学习_sun0322的博客-CSDN博客
while true; do TIME=`date "+%H:%M:%S"`; CPU=`ps -aux | grep mysqld | grep -v grep | awk '{print $3}'`; MEM=`ps -aux | grep mysqld | grep -v grep | awk '{print $3}'`;echo "${TIME},${CPU},${MEM}";sleep 3; done
---
■各种命令
0.cd
目录跳转
1.uname
uanme -a 显示服务器全部信息
uname -n 显示服务器名字
===
2.ifconfig
ifconfig -a 查看网络配置
3.who
显示当前在线用户
4.chown
chown root:webserver 修改文件的 → 所有者:用户组
5.chmod
chomod -R 777 /XXX/XXX/*.sh // -R 代表修改子文件夹中的内容
chomod -R a+r /XXX/XXX/*.sh
chomod 777 xxx.log
Linux 命令 之 【chmod】 修改文件权限~_sun0322-CSDN博客
===
目录权限已经是744 其他用户仍不能访问目录
・对于一般文件
可读权限就是能够读取该文件的实际内容,
可写权限就是能够编辑、新增、修改文件的实际内容,
可执行则代表能够运行一个脚本程序的权限。
・对于目录文件
对于目录文件的可读权限就是能够读取该目录内的结构和文件列表,
可写权限就是能够更改目录内文件结构列表、新增、删除、重命名文件,
而可执行实质是代表进入该目录的权限。
因此,对于文件,我们多设置为 644
对于文件夹,我们多设置为 755
(rwx)
===
-R, --recursive
change files and directories recursively
6.cp
cp -fp /from/1.txt /to/1/txt // preserve 保持文件属性 , force 覆盖
-p 参数虽然可以保持属性,但是,有的时候,需要sudo do - 切换特权用户之后,才能有效。
因为,如果不是特权用户的话,没有操作其他用户的权限,
即使使用 -p参数复制,复制之后,并不能保持文件属性。
文件的所有者和组信息,是登录用户的信息,不能保有原来的信息。
cp -r /AAA/BBB/CCC /home/user001
复制文件夹。把CCC这个文件夹,复制到 user001目录下面。
在复制的时候,需要使用参数 -r
7.tail
tail -n 500 xxx.log 显示文件最后500行,一般用于查看log
・tail -n
tail -f /XXXXX/XXX/.log //动态查看log信息
tail -f AAA.log 根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F AAA.log 根据文件名进行追踪,并保持重试
即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
---
tail -F AAA.log | grep FIND_KEY_WORD
・tail -数字
tail 命令,下面两个效果相同
tail -n 3
tail -3
---
都是显示最后三行的意思
---
2022-12:grep '\"2021\-12' ./*.csv | tail -3 | xargs iconv -f sjis -t utf8
显示查询出的文件中,最后三个文件的内容。(查看文件时,把编码转换成utf8后打开)
8.head
显示文章前十行
head -n 10 xxx.jsp
查看第一个,ERROR,以及其下面的30行
cat xxx.log | grep -30 ERROR | head -60 | tail -30
9.grep
grep searchStr xxx.log // 在log中查找字符串
9.1. Linux中,支持正则表达式
ls -l | grep "*.log" // 查询不到内容
ls -l | grep .log // OK,可以查询到你想要的内容
ls -l | grep *.log // OK,可以查询到你想要的内容
9.2. grep 中的 ^ 代表开头的意思
grep /bin/grep
grep -iv [指定字条串] [文件]
在文件中搜索字符串匹配的行并输出
-i 不区分大小写 -v 排除指定字符串
grep -i java /etc/profile
grep -v ^# /etc/profile
不显示以#开头的行
要找出userIdList.csv文件中,A到H打头的行
grep '^[A-H]' userIdList.csv
※ 不同于 java 中的正则表达式 中的 ^, java 中的 ^ 代表 排除的意思
[^abc] Any character except a, b, or c (negation)
===============
9.3. grep 中的 $ 代表结尾的意思
===============
9.4.1. grep -E "Batch[0-9]{3}W"
按正则表达式查询,使用参数【-E】
下面的第一行,第二行,OK, 3,4行NG,查询不出来内容
grep -E "Batch[0-9]{3}W"
grep -E Batch[0-9]{3}W
grep Batch[0-9]{3}W
grep Batch[0-9]{3}W
===============
9.4.2. grep -e "batch.jar$"
XXX_batch.jar // 抽出
XXX_batch.jar_bak_2020_1208 // 不会被抽出
grep -e "KEY1" -e "KEY2" // 查询多个条件
keytool -list -v -keystore cacerts -storepass changeit | grep -e "XXX" -e "XXX"
外部系统连接SFDC,获取SFDC侧的数据_sun0322-CSDN博客
===============
9.5.grep -v 排除
9.6.・cat xxx.log | grep -1 yourkeyword
// 会把关键字所在的行,以及前一行,后一行,都显示出来
9.7.grep -Hn 显示文件和行数
9.8.文件名的显示
grep key *.csv // 显示文件名:内容 (即使不加H,也能显示文件名)
grep key user.csv // 不显示文件名 (想显示时,要加 H)
10.view
view xxx.log
11.1.cat
cat xxx.log
// 可以在显示文件的时候,显示行号
root@sxzap01:/usr/local/tomcat/apache-tomcat-9.0.30/webapps/examples/jsp# cat -n index.html
// 显示行号,可以配合grep一起使用
cat -n index.html | grep apache
cat 与 more 一起使用
// 比less多的效果, 显示后的内容,会残存在操作的界面中
cat -n index.html | more
11.2.less 分页查看文件
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页 |
【pagedown】 | 向下翻动一页 |
【pageup】 | 向上翻动一页 |
/字串 | 向上搜寻【字串】的功能:n:向下查找;N:向上查找 (补足说明:输入「/serchKey」之后, 先按下回车,检索开始,再按N) |
?字串 | 向上搜寻【字串】的功能:n:向上查找;N:向下查找 |
q | 离开less这个程序 |
鼠标滚轮,可以一点一点翻页,使用起来非常方便
===
---
less -N index.html // 显示行号, 注意,是大写的 N
===
11.3.more 查看文件
操作 | 功能说明 |
---|---|
空白键(space) | 代表向下翻一页 |
Enter | 代表向下翻【一行】 |
q | 代码立即离开more ,不再显示该文件内容 |
Ctrl + F | 向下滚动一屏 |
Ctrl + B | 返回上一屏 |
= | 输出当前的行号 |
:f | 输出文件名和当前行的行号 |
more 直接 翻到 最后一页 大写的G (Shift + g)
more n 继续向下查找
more N 向上查找 (Shift + n)
====
12.clear
清屏 // cmd中是cls
13.reset
重新加载 // 查看class文件会乱码,之后一直乱码,使用reset可以解决
14.free
15.df
df | grep ws 查看磁盘容量(每一个磁盘分区的使用情况)
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4041060 0 4041060 0% /dev
tmpfs 814496 1576 812920 1% /run
/dev/sda2 26700964 7634492 17687096 31% /
tmpfs 4072468 0 4072468 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 4072468 0 4072468 0% /sys/fs/cgroup
/dev/loop1 91264 91264 0 100% /snap/core/8268
tmpfs 814492 0 814492 0% /run/user/1000
/dev/loop2 99328 99328 0 100% /snap/core/9665
如果有使用其他 公用盘符的地方,可以通过 df 看出来
172.192.168.22:/DATA/XXX/XXX --------------- /DATA/XXX/XXX
1.1 查看磁盘空间的使用
df -h
1.2 查看节点的使用 // 节点满了,同样会影响使用
df -i
linux磁盘爆满 linux df -i 100%处理_树叶咖啡厅-CSDN博客
16.du
du -s websphere 显示每个文件 和 目录的磁盘使用空间(容量)
・查看指定目录下,每个包含sss的文件夹,所占用空间的大小
【查看磁盘容量】
find ./ -maxdepth 1 -type d | grep sss | xargs du -sh
---
cd /AA/UserGroup/
〇 find ./ -maxdepth 1 -type d | grep sss | xargs du -sh
// sss 是文件夹名字包含的内容。(sss001,sss002)
× find ./ -maxdepth 1 -type d | xargs du -sh
// 无法看到每个文件夹,看到的是整体
〇 find ./ -maxdepth 1 -type d
× find ./ -type d -maxdepth 1 // 有警告
---
・du与df的区别和联系
1.
du,disk usage,是通过搜索【文件来】计算每个文件的大小然后累加
df,disk free,通过【文件系统】来快速获取空间大小的信息
2.
du查看目录大小,
df查看磁盘使用情况。
・usage 英 [ˈjuːsɪdʒ] n. 使用;用法;惯例
---
17.pwd
查看当前路径
18.passwd
・变更密码
・查看密码锁定状态
# passwd -S YourUserID
pispread PS 2020-04-30 7 99999 15 -1 (Password set, SHA512 crypt.)
(パスワード設定済み、SH512暗号化)
用户锁定
# passwd -l pispread
Locking password for user pispread.
passwd: Success
查看用户 // 只有 root 用户才能执行
# passwd -S pispread
pispread LK 2020-04-30 7 99999 15 -1 (Password locked.)
用户解锁
# passwd -u pispread
Unlocking password for user pispread.
passwd: Success
查看用户
# passwd -S pispread
pispread PS 2020-04-30 7 99999 15 -1 (Password set, SHA512 crypt.)
=
第一列: 用户名
第二列: 账户状态:PS/P为正常状态,LK/L为锁定状态
第三列:上次密码修改时间
第四列: 密码最小使用天数(密码最少使用多少天才可以修改密码,默认0表示无限制)
第五列:密码最大使用天数(密码使用多少天需要修改密码,默认99999永不过期)
第六列: 密码过期前警告天数(密码过期前多少天警告用户修改密码, 默认过期前7天警告)
第七列: 密码过期天数(密码过期后多少天用户被锁定,锁定之前用户可以登录系统并更改密码)
第八列: 密码配置状态及加密算法,Password Set 表示密码已设置, Password locked 表示密码被锁定或未设置密码,SHA512 crypt表示使用SHA512算法
======
19.man
查看命令帮助
man 7 ascii
可以查看ASCII 编码表
Linux 下 ascii 的查看方式_https://space.bilibili.com/59807853-CSDN博客
20.tar
tar -cvf etcbak.tar etc/ //打包一个tar
tar -cvzf etcbak.tar.gz etc/ //打包压缩一个 tar
tar -xvf etcbak.tar //解开一个tar
tar -zxvf etcbak.tar.gz etc/ //解压一个tar
tar -tvf XXX.tar //列出xxx.tar文件中的内容
jar -tvf XXX.ZIP //列出xxx.ZIP文件中的内容 // 可以使用 jar 命令,查看zip文件中的内容
tar -cvf my.bak.tar --exclude=/home/123 --exclude=/home/125 /home //打包一个tar 同时排除一部分文件夹
打包
压缩文件后,每次的HASH值(MD5)都不相同的原因_sun0322-CSDN博客_同一个文件md5每次不一样
tar -tvf XXX.tar //列出xxx.tar文件中的内容
结合其他命令使用 , tar -tvf | grep keyWord
// Linux中,压缩,只能针对一个文件进行压缩。
// 所以,我们一般先把多个文件打到一个tar文件中,
// 然后再对这个tar文件进行压缩
・实际应用 :AP2 环境配置,和AP1 相同 (打包时,会保持文件的属性情报.)
AP1
tar -cvf /home/user001/bin.tar /Tool/Apl/bin
AP2
tar -xvf /home/user001/bin.tar -C /Tool/Apl/bin --strip-components 3
--strip-components Number 是指要去除的目录层数,这里是3,说明要从顶级目录开始去掉3层目录
・tar -zxvf xxx.gz、 出现 これはtarアーカイブではにようです。时
LANG=C tar -zxvf xxx.gz (tar: This does not look like a tar archive.)
使用,【gunzip】命令
21.ls
・ls 不显示日期信息 (自动化比较时,生成实际值和期待值比较)
find /AAA/BBB/CCC/XXX | xargs ls -lpd | awk '{print $1,$3,$4,$5,$9}
ls -lpd /AAA/BBB/CCC/XXX/file001.xml | awk '{print $1,$3,$4,$5,$9}ls -lpd /AAA/BBB/CCC/XXX/file001.xml | awk '{print $1,$3,$4,$5,$9} > 1.txt
〇 ls -lpd /AAA/BBB/CCC/XXX/file001.xml 2>&1| awk '{print $1,$3,$4,$5,$9} > 1.txt
× ls -lpd /AAA/BBB/CCC/XXX/file001.xml | awk '{print $1,$3,$4,$5,$9} > 1.txt 2>&1
×: 这种写法,错误输出,无法写入到文件 1.txt中
・其它
显示所有文件夹
ls -d */
ls -ld */
ls -l //查看文件一览
ls --full-time // 显示年的信息
ls -l ./|grep "^d"|wc -l // ^d 查看以d开头, 即文件夹的个数
ls -l ./|grep "^-"|wc -l //^- 查看以 -开头, 即文件的个数
ls -a
ls -lrt // 最新的文件在下面显示 (!! 文件比较多的时候,推荐使用这种方式) // -r reverse 相反的
ls -lh // -h, --human-readable // M
ls -lF // 文件后面追加标记
目录后显示斜杠(/);
可执行文件后显示星号(*);
符号链接后显示符号@
・total 12 “所列出内容的磁盘占用空间总和值。单位为kbytes" // 应该都是4的倍数,Linux以块为单位存储,1个块是4KB
・RWX RWX RWX 后面的内容 表示 ,文件里面 文件夹的个数
通常要 再 减去 2 才是实际文件夹 的个数 因为包含 ./ ../
7 。。。。。。。sxz001
ll -l ./|grep "^d"|wc -l // ^d 查看以d开头, 即文件夹
ll -l ./|grep "^-"|wc -l //^- 查看以 -开头, 即文件
===
ls --full-time // 显示年的信息
===
文件大小单位时byte
7位是1M左右 (1,000,000)
===
ls -a
当期待有文件,却找不到文件时,尝试使用 ls -la
有时,文件的所有者是隐藏文件 「.」开头
以「.」开通的文件,即使使用 sudo su - 到对应的目录下后,也看不到指定的文件
ls -la
-l 长格式列出
-a 显示所有文件,包括隐藏文件和目录(所有以“.”为开始的文件和目录为隐藏文件)
所以ls -la 是列出当前目录中的所有文件和目录,包括隐藏文件和目录
===
在linux下,以点"."开头命名的文件在系统中被视为隐藏文件。
因此,如果想隐藏某个文件或目录,
一种简单的办法就是把文件名命名为点开头。
对于目录backcron,
可以这样操作隐藏:mv backcron .backcron
如何查看以“.”开头的文件,
可以用: ls -a -a 表示不忽略以点“.”开头的文件。
ls -F
-F 该选项
在每个目录后显示斜杠(/);
在每个可执行文件后显示星号(*);
在每个符号链接后显示符号@
---文件类型
在Linux下一切皆文件 everything is file,包括目录也是文件的一种而这些文件被分为七种类型:
• -:普通文件
• d: 目录文件
• b: 块设备
• c: 字符设备
• l: 符号链接文件
• p: 管道文件pipe
• s: 套接字文件sock
---Linux中ls命令的用法详解 - 白蓝的橙 - 博客园
--- 文件排序
// 最新的文件在上面显示
ls -lt
// 最新的文件在下面显示 (!! 文件比较多的时候,推荐使用这种方式)
ls -lrt
// -r reverse 相反的
---linux系统下查看文件大小命令(以G/M/K为单位查看)
ls -lh
// -h, --human-readable
======================
22.ps
查看进程中的线程
-T Show threads, possibly with SPID column.
ps -T -p <pid>
THREAD DISPLAY
H Show threads as if they were processes.-L Show threads, possibly with LWP and NLWP columns.
m Show threads after processes.
-m Show threads after processes.
-T Show threads, possibly with SPID column.
--
查看服务
ps -e | grep ftp 查看服务
PS的aux和-ef参数
PS的aux和-ef参数 - Linux操作系统:Ubuntu_Centos_Debian - 红黑联盟
关于ps -aux | grep KeyWork1 | grep XXX.jar | grep -v grep | wc -l
・可以在检索结果中,再次查询
・grep -v grep :去除grep 命令本身
・wc -l:统计查询出来的件数 (是件数(条数,行数),不是个数(一行可能有多个XXX.jar))
ps aux :
最常用的 BSD 风格选项组合,其中的 a表示所有关联到终端的进程,
如果同时使用 x 则代表所有进程;u 表示列出进程的用户。
ps -elf : // 常用 ps -elf | grep XXX
ps -ef // 常用
unix标准风格组合,其中-e 代表列出所有进程,-l 代表长格式,-f 代表完整的格式
查看连接用户
除了who之外,还可以使用如下命令
ps -aux | grep sshd
---
Linux学习笔记:ps -ef、ps aux、kill -9 - Hider1214 - 博客园
.ps -aux // BSD风格
1.USER:用户名称
2.PID:进程号 // kill -9 PID
3.%CPU:进程占用CPU的百分比
4.%MEM:进程占用物理内存的百分比
5.VSZ:进程占用的虚拟内存大小(单位:KB)
6.RSS:进程占用的物理内存大小(单位:KB)
7.TTY:终端名称(缩写),若为?,则代表此进程与终端无关,由系统启动的
8.STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
9.START:进程的启动时间
10.TIME:CPU时间,即进程使用CPU的总时间
11.COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
ps aux | grep mysql | grep -v grep | awk ‘{print "kill -9" ,$2}’ | sh
.ps -ef // System V展示风格
1.UID:用户ID
2.PID:进程ID
3.PPID:父进程ID
4.C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
5.STIME:进程启动的时间
6.TTY:完整的终端名称
7.TIME:CPU时间
8.CMD:完整的启动进程所用的命令和参数
===
ps aux 和ps -elf 区别
・ aux (①BSO 风格、②主要关注的是进程的资源占用情况)
a 所有关联到终端的进程
x 所有进程
u 列出进程的用户================
・-elf (①UNIX 风格、②则更多的关注进程的状态和从属关系)
e 列出戳有进程
l 长格式
f 完整格式
===aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 185956 5996 ? Ss Feb22 3:23 /sbin/init splash
USER:运行该进程的用户名称。
PID:进程的ID。
%CPU:该进程使用的CPU时间百分比。
%MEM:该进程使用的物理内存百分比。
VSZ:该进程使用的虚拟内存大小,单位为KB。
RSS:该进程使用的非交换出去的物理内存大小,单位为KB。
TTY:该进程所在的终端。
STAT:该进程的状态。
START:该进程开始的时间。
TIME:CPU实际使用的时间。
COMMAND:产生此进程的命令。
===-elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 46716 - Feb22 ? 00:03:23 /sbin/init splash
F:进程标志,表示进程的状态。
S:进程的状态。
UID:运行该进程的用户ID。
PID:进程的ID。
PPID:父进程的ID。
C:进程使用的CPU资源的百分比。
PRI:进程的优先级。
NI:进程的nice值。
ADDR:进程的内存地址。
SZ:进程的大小。
WCHAN:如果进程处于睡眠状态,该列将显示睡眠中的系统函数名。
STIME:进程开始的时间。
TTY:该进程所在的终端。
TIME:CPU实际使用的时间。
CMD:产生此进程的命令。
================
ps -ef 和 ps -elf 在显示时的区别,举个例子
ps -ef
和ps -elf
都是用于显示进程信息的命令,但在显示时有一些区别。
-
ps -ef
:以默认格式显示进程信息。它会列出所有进程,并显示以下列:- UID:进程的所有者ID。
- PID:进程ID。
- PPID:父进程ID。
- C:CPU使用的时间片百分比。
- STIME:进程启动时间。
- TTY:进程所关联的终端。
- TIME:进程的累计CPU使用时间。
- CMD:进程的命令行参数。
示例:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 06:36 ? 00:00:07 /sbin/init root 2 0 0 06:36 ? 00:00:00 [kthreadd] root 3 2 0 06:36 ? 00:00:00 [ksoftirqd/0]
-
ps -elf
:以长格式显示进程信息。它会列出所有进程,并显示以下列:- F:标志符,表示进程的标志位。其中,
<
表示高优先级,N
表示低优先级。 - S:进程状态,如S表示睡眠状态,R表示正在运行,Z表示僵尸进程等。
- UID:进程的用户ID。
- PID:进程ID。
- PPID:父进程ID。
- PRI:进程优先级。
- NI:nice值,表示进程的优先级调整。
- VSZ:虚拟内存大小。
- RSS:物理内存大小。
- WCHAN:进程等待状态。
- ADDR:该进程在内存中的位置。
- SCHED:进程的调度策略。
- TTY:进程所关联的终端。
- TIME:进程的累计CPU使用时间。
- CMD:进程的命令行参数。
示例:
F S UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 S 0 1 0 20 0 268824 9676 poll_s Ss ? 0:01 /sbin/init 1 S 0 2 0 20 0 0 0 kvm-th S ? 0:00 [kthreadd] 1 S 0 3 2 20 0 0 0 smpboo S ? 0:00 [ksoftirqd/0]
- F:标志符,表示进程的标志位。其中,
总体而言,ps -elf
的输出更详细和易读,可以提供更多的进程信息。但是在某些情况下,ps -ef
的简洁输出更方便查看。
示例:
=====================
==============================
23.chsec
AIX中,使用此命令,修改配置文件键值对
sudo su -
chsec -f /etc/security/lastlog -s userName -a unsuccessful_login_count=0
passwd userName
input the new Password
・↑AIX重置密码
・↓Linux重置密码
pam_tally2 -u userName --reset
passwd userName
24.sed
24.1处理替换字符等操作
Linux中的sed命令,使用方法之一「替换字符串中的内容 」,以及「s/ / / 」和「s/ / /g」之间的区别_sun0322-CSDN博客
24.2 查看文件中,指定的行数 查看文件的50行到60行
sed -n "50,60p" theFileName
24.3 在某一行后面,加入一行新的内容
sed -i '60a column1,column2,column3' xxxx.csv
// 在60行之后,插入一行新的内容
// 新的内容在第61行
// 「column1,column2,column3」是新插入的内容
24.4 删除文件的指定行
sed -i '20,30d' filename 删除第20-30行
24.5 sed的更多操作
shell自动化处理_相关知识整理(整理中)20210329_sun0322-CSDN博客
25.locate
locate XXXX.classs 查找文件(只限Linux中使用)
26.cal
cal -y 显示日历
cal 9 1752
※ 2100年不是闰年
27.mkdir
创建文件夹
mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
mkdir -p /xxx1/xxxx2/xxxx3
mkdir -m :创建文件夹时,指定访问权限
mkdir -m 777 mydir
mkdir m755 TEST_FOLDER // OK 没有问题(m755 可以没有空格)
mkdir m755 TEST_FOLDER
使用 -p 参数时,有一下几个特点
1.即使文件夹已经存在,也不会报错
2.如果父目录不存在,创造父目录
3.-pm 指定权限创建文件夹时,权限只对最后一个目录生效,其他使用默认权限
===================
3.-pm 指定权限创建文件夹时,权限只对最后一个目录生效,其他使用默认权限
mkdir -pm 0777 /home/ubuntu/DATA/bbb/ccc/ddd
===
====
28.touch
创建文件
修改文件时间(过去时间)指定到分
touch -t 202010302230.00 sss.ogg
==
29.rm
rem -r directory // 删除文件夹时,要带上参数r
Linux cannot remove 'XXX': Is a directory 解决办法_sun0322-CSDN博客
参数 v 显示删除时的详细信息
删除某个文件之外,其他所有的文件
rm !(test1) // 删除除test1之外,所有的文件
rm !(test1|test3) // 删除除test1、test3之外,所有的文件 (文件之间,使用或者符号连接)
// ※1 注意!!! 文件和 运算符之间 不能带有空格
// ※2 当文件不存在时,会出如下的信息
Couldn’t delete file: No such file or direcotry
rm : `!(test1|test3)' を削除できません:そのようなファイルやディレクトリはありません。
30.vi
vi的使用
31.特殊符号之【`】 不是单引号 (是反单引号)
可以直接输出命令执行后的结果
这个符号时【反单引号】,``里面是可以执行的语句
sxz001@sxzap01:~$ uname -n
sxzap01
sxz001@sxzap01:~$ echo aaa_`uname -n`_bbb
aaa_sxzap01_bbb
sxz001@sxzap01:~$
获得日期 ( ※:date 后面有空格)
xxx.log`date +%Y%m%d`
ls -l xxx.log`date +%Y%m%d`
echo xxx.log`date +%Y%m%d`
32.特殊符号之【&】
在Shell中,“$“和“&“的作用_sun0322-CSDN博客
放在命令最后,可以让程序后台运行。
后面跟上一个命令,可以执行该命令
错误输出,也输出到标准输出中
33.sudo
sudo su -
34.su
su targetUserName
su - 与su
通过su切换用户还可以直接使用命令su USERNAME,与su - USERNAME的不同之处如下:
su - USERNAME切换用户后,同时切换到新用户的工作环境中
// 使用 id 命令,查看,是变更后 的用户的id情报
su USERNAME切换用户后,不改变原用户的工作目录,及其他环境变量目录
// 使用 id 命令,查看,是变更前 的用户的id情报
非 root 用户 执行 此命令 时, 需要输入 密码
35.log设定(Tera Term)
Teraterm的Log设定_sun0322-CSDN博客_tera term怎么保存log
36.ll (只限Linux中使用)
37.id
id // 显示下面的所有信息
id -u 显示uid ; id -nu 显示用户信息
id -g 显示gid ; id -ng 显示组信息
id -G 显示所有的组信息; id -nG 显示附加值信息
上面的绿字,只是ID,加上 n 后,可以显示名字
应用:
・Jenkins脚本执行时,想查看执行脚本的用户,我们可以使用此命令查看
・docker -u 参数,指定 用户与组时,使用此命令,获取用户与组信息
38.特殊符号之 【$()】
・echo $(id -u) 等同于 echo `id -u`
・使用【$()】连续执行命令
echo $(pwd; pwd)
echo $(cd ..; pwd)
・计算变量相加
Linux Shell 数字相加
×:
COUNT=0
COUNT=$COUNT+1
echo ${count}
---
0+1
〇:
COUNT=0
COUNT=$(( $COUNT+1 ))
echo ${count}
---
1
39.dirname
dirname /ssss/aaaa/bbbb/test.txt
返回结果
dirname /ssss/aaaa/bbbb
获取当前正在执行的shell所在的位置
workdir=$(cd $(dirname $0); pwd)
步骤1
dirname $0,取得当前执行的脚本文件的目录
步骤2
cd 到 sh 所在的工作目录
步骤3
pwd显示当前工作目录
关于 $0,代表sh自身
与该sh被调用时,调用的方法有关。
sxz001@sxzap01:~$ ls
myJava mySoftware temp test.sh
sxz001@sxzap01:~$ cat test.sh
echo "hello word"
echo $0
sxz001@sxzap01:~$ sh /home/sxz001/test.sh
hello word
/home/sxz001/test.sh
sxz001@sxzap01:~$ sh ./test.sh
hello word
./test.sh
sxz001@sxzap01:~$ sh test.sh
hello word
test.sh
sxz001@sxzap01:~$
40.find
1.在当面目录下查找 指定名字的文件 (包含子目录)
find ./ -name "*.csv"
// 2. 查看文件一览(可以看到子文件夹里面的内容)
find /AAA/BBB -type f | sort | xargs sum >result.txt 2>&1
find /AAA/BBB -type f | sort | xargs ls -lpd >result.txt 2>&1
↓ 2>&1(windows Linux 都适用)
bat shell 命令行中 2>&1 的含义_sun0322-CSDN博客
2.只在当面目录下检索,不查询子目录 // -maxdepth 1
find /AAA/BBB/CCC -maxdepth 1 -name "*.csv"
===
find /AAA/BBB/CCC -maxdepth 1 -type f | sort | grep -e "yourFileName" | grep -v grep | xargs md5sum
find /AAA/BBB/CCC -maxdepth 1 -type f | sort | grep -e "yourFileName" | grep -v grep | xargs ls -l
===
■経緯
子文件夹里面的文件,没有访问权限,使用时,出现“没有访问权限的警告”
不查询没有访问权限的文件夹,即可解决此问题
■扩展:查询多个文件(以.xml结尾)
find /AAA/BBB/CCC -maxdepth 1 -type f | sort | grep -e "yourFileName1" -e "yourFileName2.xml$" | grep -v grep | xargs md5sum
3. find -name XXX
// -maxdepth 1 要写在最前面
find /AAA/BBB/CCC -maxdepth 1 -type f -name yourFileName | xargs ls -l
4.查找文件夹下,哪些文件,含有某字符
find. -name "*.c" | xargs grep -Hn sum | sort > result.txt
漫画 | Unix/Linux 比 Windows 差远了!_码农翻身-CSDN博客
5.查找文件,忽略大小写,显示全路径,按修改时间的顺序显示
find /AAA/BBB/CCC -iname "*.csv" |xargs ls -lt
6.find 参数 mtime
n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n表示文件更改时间距离在n天以前。
例如:
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
---
查找文件更新日时在距现在时刻5天以内的文件
find ./ -mtime -5
找“5天前的那一天被更改过的档案名”find / -mtime 5
查找文件更新日时在距现在时刻5天以上(以前,之前)的文件
find ./ -mtime +5
查找文件更新日时在距现在时刻24小时之前的文件
find ./ -mtime +0
---
---
41.history
查看执行过的命令
42.1.md5sum fileName
查看文件的信息摘要
===========
powerShell
Get-FileHash .\yourFileName -Algorithm SHA256 | Format-List
===========
42.2.sum fileName
查看
・文件校验码
・文件所占的快递大小。
43.systemctl
启动停止服务
systemctl start XXXd.service
systemctl stop XXXd.service
・启动关闭防火墙: MySQL配置允许远程连接_asdXT的博客-CSDN博客_mysql允许远程连接
・启动sfpt服务:systemctl start vsftpd
===
・查看防火墙状态信息
systemctl status firewalld
・打开防火墙(如果不是显示active状态,需要打开)
systemctl start firewalld
・查看防火墙所有信息
firewall-cmd --list-all
・查看防火墙开放的端口信息(默认为空)。。。明明有开放端口,但是看不到啊。。。也许外层还有防护墙
firewall-cmd --list-ports
・查看所有永久开放的端口(默认为空)
firewall-cmd --list-ports --permanent
===
# 针对一个ip段访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept"
192.168.1.0是你的IPV4地址;/24是你的子网掩码,代表255.255.255.0。
===
# 开启防火墙
systemctl start firewalld.service
# 防火墙开机启动
systemctl enable firewalld.service
# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙状态
firewall-cmd --state
#查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
firewall-cmd --list-all-zones
# 查看现有的规则
firewall-cmd --zone=public --list-ports
# 重载防火墙配置
firewall-cmd --reload
# 添加单个单端口
firewall-cmd --permanent --zone=public --add-port=81/tcp
# 添加多个端口
firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp
# 删除某个端口
firewall-cmd --permanent --zone=public --remove-port=81/tcp
# 针对某个 IP开放端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.51" port protocol="tcp" port="8082" accept"
# 删除某个IP
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept"
# 针对一个ip段访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept"
#查看可开启的服务
firewall-cmd --zone=public --list-services
# 开放服务
firewall-cmd --add-service=ssh --zone=public --permanent
# 删除服务
firewall-cmd --remove-service=ssh --zone=public --permanent
# 添加操作后别忘了执行重载
firewall-cmd --reload
===
44.wc
wc fileName
输出文件中的行数、单词数、字节数
wc -l fileName
统计文件的行数 (统计换行符的个数, l 是 line 的缩写)
※ 注意,有的时候文件最后一行没有换行符,这时候,统计出来的行数,比实际行数少1行
45.hexdump
hexdump fileName
以十六进制形式查看文件
(windows的换行
显示位0a0d,
实际应该是0d0a,
这里面涉及了低位,与高位的问题,
所以十六进制的显示,与实际的表示,是反过来的)
■十六进制
,:2C
0:30
A:41
a:61
■apache (hpptd)(httpd.server)
早期的apache小组,现在已经成为一个拥有巨大力量的apache基金会。
他们把起家的apache更名为httpd,
也更符合其http server的特性。而apache现在成为 apache基金会下几十种开源项目的标识。
apache和httpd是一个,到apache2后就叫httpd了
46.xargs
46.1
find /XXX/XXX/XXX -type f | xargs sum // 得到的两个参数时 校验码 与 文件的块大小
find /XXX/XXX/XXX -type f | xargs md5sum // 后面可以是各种命令 比如 rm 那就是删除所有找到的文件
find /XXX/XXX/XXX -type f | xargs ls -l // 这种方式,可以显示文件的
Linux xargs命令-(转载) - 骑单车去旅行 - 博客园
----
46.2
加-i 参数直接用 {}就能代替管道之前的标准输出的内容
(例:复制文件)
find /AAA/BBB/CCC/ -maxdepth 1 -type f | xargs -i cp {} /Work/Back
find /AAA/BBB/CCC/ -maxdepth 1 -type f | xargs -i sudo cp {} /Work/Back
find /AAA/BBB/CCC/ -maxdepth 1 -type f | grep -e ".yml$" | xargs -i sudo cp {} /Work/Back
47.vmstat
Linux vmstat命令实战详解_浮生一梦-CSDN博客_vmstat
vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。
可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,
内存使用,虚拟内存交换情况,IO读写情况。
这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,
二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,
而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
47.umask
umask:umask用来去掉目录或文件的某些权限
=====================
umask -S // 查看权限
umask -p // 查看掩码 ※
// 4位 后三位有效 第一位是 粘着位(sticky)
粘着位(sticky) ⇒ linux中的粘滞位(Sticky bit)_喵喵的博客-CSDN博客
linux系统规定文件的默认最大权限是666,
目录的默认最大权限是777,那么umask=022
需要反过来看就是755(u=rwx,g=rx,o=rx),
所以对应权限:
1.目录:022->755(u=rwx,g=rx,o=rx)
2.文件:022->644(u=rw,g=rx,o=rx)
linux系统规定文件的默认最大权限是666
创建文件和目录时的默认权限umask_u013500740的博客-CSDN博客
umask 022 新建文件是 644
(666-022=644)
48.mv
1.除了移动文件之外,还可以用于给文件改名
mv aaa001 aaa002 // aaa001 ⇒aa002
2.强制替换文件
mv -f
49.jq
jq是Linux下面把文本字符串格式化成json格式的工具
jq '.key'
获取Json字符串中的key值
jq使用,非常好的例子
=====Jenkins 脚本中的使用
总结【GetHub的WebAPI,ASSET_ID】,【Linux的jq命令】(草稿版+实际操作)-CSDN博客
===
50.SUID SGID
Set User ID 的缩写
rwx rwx rw-
rws rwx rw- // chmod u+s //当运行某程序时,相应进程的属主,是程序文件自身的属主,而不是启动者;
rwx rws rw- // chmod g+s
Linux 文件目录特殊权限设定(SUID,SGID,SBIT)_乐沙弥的世界-CSDN博客_linux特殊权限
Linux浅谈SUID,SGID,Sticky粘滞位对目录以及文件的相关作用_禾苗成长的技术博客_51CTO博客
■suid
====
一般都作用于二进制文件上,一般不作用在目录上。
====
■sgid: (rws)
====
a.作用在目录上,
当目录下新建文件时,以及文件夹时,那么自动获取目录的所属组作为文件或者文件夹的所属组。
b.它也可以对二进制文件生效,但是很少使用。
====
rws
51.usermod
・添加组
usermod -G groupname1, groupname2 username
・确认
cat /etc/group | grep -e groupname1 -e groupname2
Linux添加/删除用户和用户组
1、建用户:
adduser phpq //新建phpq用户
passwd phpq //给phpq用户设置密码
2、建工作组
groupadd test //新建test工作组
3、新建用户同时增加工作组
useradd -g test phpq //新建phpq用户并增加到test工作组
注::-g 所属组 -d 家目录 -s 所用的SHELL
4.1、给已有的用户增加工作组
usermod -G groupname username
或者:gpasswd -a user group
4.2、给已有的用户增加多个工作组
usermod -G 附属组1,附属组2,...,附属组X 用户名
5、临时关闭:在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了。想恢复该用户,去掉*即可。
或者使用如下命令关闭用户账号:
passwd peter –l
重新释放:
passwd peter –u
6、永久性删除用户账号
userdel peter
groupdel peter
usermod –G peter peter (强制删除该用户的主目录和主目录下的所有文件和子目录)
7、从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A 或者用命令 gpasswd -d A GROUP
8、显示用户信息
id user
cat /etc/passwd
52.访问权限说明
■パターン1
AAA drwx r-x ---
└
BBB drwx rwx ---
└bbb.txt
组用户,可以修改bbb.txt的内容
组用户,无法再AAA目录下面创建文件 或者 文件夹
组用户,可以修改AAA目录中,组用户 是 w 权限的文件
组用户,可以再BBB目录中,创建文件 或是 文件夹
■パターン2
AAA drwx rwx ---
└
BBB drwx rwx ---
└bbb.txt
组用户,可以修改bbb.txt的内容
■パターン3
AAA drwx r-x ---
└
BBB drwx rwx ---
└bbb.txt
组用户,可以在BBB中创建文件夹
============
即,BBB文件夹下面的权限,应该不受到AAA文件夹权限的影响!!!
※1 但是,首先要有 对AAA文件夹的访问权限!!!
如果对AAA没有访问权限,是无法对bbb.txt进行操作的。
※2
AAA 701
└BBB 701
└DDD 701 // 可以访问,无权限在当前目录下执行 ls // 705 就可以 执行 ls
└ddd.txt 777 // 可以修改文件
// DDD 701、705 时, 无权限在目录下执行touch命令创建文件【5((r-x))】
============
■XL Deploy
=====
发布文件时,如果之前 DDD 文件夹下文件已经存在,
step1.删除文件
step2.创建文件 (使用连接的token对应的用户来创建文件)
// 即创建之后,文件的各种权限信息都会改变
=====
↑ 所以,对于 DDD文件夹,访问权限至少要设置为 703 // 或者改变上层文件夹的所属
↑ ddd.txt 文件的权限至少是 706
※ 建议 修改文件的所属!!!
只要对目录有(w)权限,那么即使没有对目录下文件的 r w 权限,也能删除该文件
比如: 左面 sxz001用户建立了一个ttt文件,
右面tomcat用户 「rm -f ttt」可以删除该文件
53.gpasswd
添加一个用户到一个组,同时保留以前添加的组时,使用 gpasswd 这个命令来添加操作用户
gpasswd -a user_name group_name
使用该命令,把用户从组中移除
gpasswd -d user_name group_name
54.adduser 创建用户
----
---
---
查看sudo 权限的使用 cat sudoers
------
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码). // 上面的 sudo 组
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
■扩展
第三行: 指定的命令,可以使用sudo权限来执行
youuser ALL=(ALL) NOPASSWD: /usr/bin/chmod, /usr/bin/chown
----
---
对tomcat用户添加组后,
重新登陆,即可切换sudo 用户
55.grpup .passwd .sudoers
查看所有组, 所有用户,sudo权限
--user
adduser phpq
cat /etc/passwd | grep sxz
--group
gpasswd -a user_name group_name
gpasswd -d user_name group_name
cat /etc/group | grep -e groupname1 -e groupname2
--sudo
cat /etc/sudoers | grep % // % 后面是组的名字
---
// 使用 vi 修改【/etc/sudoers】的内容 (让文件有写的权限)
yourUserName1 ALL = (ALL)NOPASSWORD: ALL
yourUserName2 ALL = (root)NOPASSWORD:/usr/bin/chmod, /AAA/BBB/CCC/aaa.sh
// aaa.sh 可以时自己写的脚本,里面有各种命令,比如 su -
使用时
sudo /AAA/BBB/CCC/aaa.sh
56.kill
kill -9 PID
■ windows
taskkill /pid 4740 /T // 子程序也同时终了
taskkill /pid 4740 /p // 制终了程序
57.awk
Linux中awk工具的使用_谢公子的博客-CSDN博客_awk
以 : 为分隔,显示/etc/passwd中每行的第1和第7个字段
awk -F ":" '{print $1,$7}' /etc/passwd 或 awk 'BEGIN{FS=":"}{print $1,$7}' /etc/passwd
// 使用 awk 获取 ps -aux 的返回值中的第二个项目,Kill 掉
ps aux | grep mysql | grep -v grep | awk ‘{print "kill -9" ,$2}’ | sh
58.| 管道(|) (パイプ 管道 pite)
管道(|)命令用于将Command1命令的结果作为输入传给Command2命令
■ 示例1
ls -l | grep XXX
// grep searchStr xxx.log // 在log中查找字符串
■ 示例2
ll -l ./|grep "^d" | wc -l // ^d 查看以d开头, 即文件夹
ll -l ./|grep "^-" | wc -l //^- 查看以 -开头, 即文件
■ 示例3
cat -n index.html | more
■ 示例4
find /XXX/XXX/XXX -type f | xargs md5sum // 后面可以是各种命令 比如 rm 那就是删除所有找到的文件
59.echo
echo abc >test001.txt
// 文件有换行符 // 0a
60.其他用户修改文件后,对文件所属,组的影响
不会有任何影响
(可以改变文件的内容 使用 echo 或者 vi)
例:使用tomcat用户,修改 sxz001用户所属文件的内容。
61.tee
echo "XXX" | tee -a fileName
向文件中添加内容
62.查看系统・用户信息
#系统信息
hostname 或 uname -n #主机名
history #查看命令历史,有可能可以查看到管理员的一些重要命令,包括密码等
uname -a #所有版本
uname -r #内核版本信息
uname -m #Linux内核架构
cat /proc/version #内核信息
cat /proc/cpuinfo #CPU信息
cat /etc/*-release #发布信息
cat /etc/issue #发布信息
#用户和组信息
whoami #查看当前用户身份
who #查看当前登录系统的所有用户
w #显示已经登陆系统的用户列表,并显示用户正在执行的指令
users #显示当前登录系统的所有用户的用户列表
id #当前用户信息
id || (whoami && groups) 2>/dev/null #当前用户信息
cat /etc/passwd | cut -d: -f1 #查看所有的用户名
cat /etc/passwd | grep "sh$" #查看拥有bash的用户
awk '/\$1|\$6/{print $1}' /etc/shadow #查看可以远程登录的用户
cat /etc/shadow #查看密码
cat /etc/group #查看组信息
last #查看登录历史
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" #查看拥有sudo权限的用户
sudo -l #列出目前用户可执行与无法执行的指令
awk -F: '$3==0{print $1}' /etc/passwd #查看超级用户(uid=0),有些黑客将普通用户的uid改为0,则该普通用户也拥有了超级权限
#登录信息
last #查看最近登录成功的用户及信息,查看的是 /var/log/wtmp 文件
lastb #查看最近登录失败的用户及信息,查看的是 /var/log/btmp 文件
lastlog #显示系统中所有用户最近一次登录信息,读取的是 /var/log/lastlog 文件
cat /var/log/secure* | grep Accepted #查看登录成功的记录
cat /var/log/secure* | grep Failed #查看登录失败的记录
grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}' #查看登录成功的日期、用户名及ip
grep "Failed password for root" /var/log/secure | awk '{print $11}' #查看有哪些ip在爆破主机的root账号
grep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nr #查看爆破用户名字典
#网络信息
ifconfig
arp -a
cat /etc/network/interfaces #查看网络接口信息
route #查看路由信息
traceroute baidu.com #查看路由节点
cat /etc/hosts #查看hosts文件
cat /etc/resolv.conf #查看dns信息
cat /etc/services #查看端口服务映射
#服务、端口和进程信息
ps aux / ps -ef #静态查看进程
pstree #查看进程树
top #动态查看进程
ps aux --sort -pcpu #静态查看进程,根据cpu使用情况排行,从高到低
ps aux --sort -pmem #静态查看进程,根据内存使用情况排行,从高到低
netstat -pantu #查看端口信息
netstat -pantu | grep 18176 #查看端口连接情况,过滤含有18176端口的行,就可以查看连接的端口
cat /etc/inetd.conf #由inetd管理的服务列表
cat /etc/xinetd.conf #由xinetd管理的服务列表
cat /etc/exports #nfs服务器的配置
cat /etc/services #查看端口服务映射
ls -l /proc/18176/exe #查看PID为18176的进程的可执行程序
lsof -p 18176 #查看PID为18176的进程打开的文件
lsof -c sshd #查看进程sshd打开的文件
lsof -i:33946 #查看33946端口对应的一些进程
ps -p PID -o lstart #查看进程的启动时间点
fuser -n tcp 33946 #查看33946端口对应的进程PID
#环境信息
env #打印系统环境信息
set #打印系统环境信息
echo $PATH #环境变量中的路径信息
history #历史命令
cat /etc/profile #显示默认系统遍历
cat /etc/shells #显示可用的shell
63.chage -l yourUserName
// 查看密码过期时间
http://www.voidcn.com/article/p-xmrfzbzi-bee.html
64.ssh
ssh userName@serverName
输入之后,会让你输入密码
无法连接时,
ssh: connect to host serverName port 22: Connetion timed out
可以在cmd命令行下直接执行【ssh userName@serverName】
数码密码后(密码可以鼠标右键粘贴)
登录后的效果和TeraTerm登录效果相同
ssh -i 使用认证文件,不需要再输入密码
ssh -i identity_file userName@serverName
identity [aɪˈdɛntɪtɪ] // n. 身份;同一性;一致;特性;个性;恒等式 // ssh -i // scp -i
====
ssh 连接时 忽略 known_hosts check
这个文件(known_hosts)里面的值如果是旧的,会造成无法连接!!!!!
known_hosts 文件中的 ssh-rsa 值是根据远程主机的公钥生成的。当您第一次连接到一个远程主机时,您的SSH客户端会将该主机的公钥保存在known_hosts文件中。每次连接到该主机时,SSH客户端都会验证该主机的公钥是否与known_hosts文件中的相同,以确保您正在连接到正确的主机。如果公钥【密钥指纹信息】不匹配,SSH客户端会发出警告并停止连接。这有助于保护您的计算机免受中间人攻击。
忽略check的方法
ssh -o "StrictHostKeyChecking=no" username@hostname
===
65.function
#! /bin/bash
function yourFunction {
yourFunction1
yourFunction2
}
function yourFunction1 {
command1
command2
}
function yourFunction2 {
command3
command4
}
# 要写在函数定义的下面(如果写在函数上面,会提示找不到命令)
# 注释最好使用英语,避免文字编码问题
yourFunction
66.unzip
和tar一样,都可以解压缩
linux下 tar,zip,unzip命令详解_wudinaniya的博客-CSDN博客_linux安装unzip命令和tar命令
不过需要安装
unzip xxxx.zip
安装方法
扩展,使用gzip 命令进行压缩
yum -y install unzip zip
67.zip
和tar一样,都可以压缩
把 【/Work/1117/】目录下的【aaa】文件夹 打成一个压缩包
cd /Work/1117
zip -r aaa.zip aaa
chmod 666 aaa.zip
打包时,带上主机名
zip -r `uname -n`_aaa.zip aaa
zip更多操作
在不解压的情况下查看一个zip文件的内容,使用下面的命令:
zip -sf test.zip
删除zip中的文件
zip -d test.zip smart.txt
像 zip 中 添加 文件
zip test.zip smart.txt
68.diff
diff /XXX/XXX/file1 /XXX/XXX/file2
69.scp 获取远程文件
scp -r root@otherServerName:/usr/local/aa /usr/local/
scp root@otherServerName:/usr/local/aa/file1.txt /usr/local/
// -r是复制目录
// 注意,不要忘了冒号
// 连接的时候,会显示RSA KEY 公钥 私钥 证明书之类的信息
// 确认连接yes之后,输入密码
// IP地址也可以
scp -r root@XXX.XXX.XXX.XXX:/usr/local/aa /usr/local/
70.screenfetch 显示系统信息
71.sl 小火车
小火车
72.cmatrix:黑客帝国
---
73.特殊符号【./】
前言:
目录下有 tool.sh,我们进入当前目录后,直接输入tool.sh后,回车,没有任何效果。
只有 ./tool.sh时,tool.sh才会被执行
“.”表示当前目录,“./”表示执行当前目录下可执行文件。
74.netstat
netstat -tunlp | grep 3306
netstat -an | grep 3306
netstat -anp | grep -e 3306 -e PID
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
有些内容,需要管理员权限才能看到
---
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::3306 :::* LISTEN -
---
---
root@sxzap01:~# netstat -an | grep 3306
tcp6 0 0 :::3306 :::* LISTEN
tcp6 0 0 192.168.131.128:3306 192.168.131.1:50010 ESTABLISHED
---
============
74.1.netstat、rmsock (AIX)
AIX 服务中 netstat -anop 参数不好用 (具体是参数p不好用)
netstat -Aan | grep 1334
f10002000043c398 tcp4 0 0 *.1334 *.* LISTEN
rmsock f10002000043c398 tcpcb
removes a socket that does not have a file descriptor.
删除没有文件描述符的套接字。
The socket 0x43c008 is being held by proccess 217248 (writesrv).
rmsock 命令
用途
除去不包含文件描述符的套接字。语法
rmsock Address TypeofAddress描述
rmsock 命令除去不包含文件描述符的套接字。它接受 socket、tcpcb、inpcb、ripcb 或 rawcb 地址并将其转换成套接字地址。 然后检查每个进程所有打开的文件以查找套接字的匹配。如果没找到匹配,对该套接字执行异常终止操作,而不考虑套接字 linger 选项的存在。套接字保留的端口号释放。如果发现匹配,文件描述符和主进程状态显示给用户。结果发送到 syslogd 并在 /var/adm/rmsock.log 文件中记录。
netstat -Aan |grep 9900 #会出现一大串列表.
rmsock f10000f303268358 tcpcb #参数为上面列表中,每行前面的序号.该命令会显示一个PID.
ps -ef |grep 807084 #上面输出的PID.
ps -ef | grep 217248
root 217248 159882 0 Jan 08 - 0:00 /usr/sbin/writesrv
===========
75.cron
crontab -l
cat /etc/crontab
Linux中的Cron ,任务计划_sun0322-CSDN博客
76./dev/null
/dev/null 是一个特殊的设备文件,所有接收到的数据都会被丢弃。有人把 /dev/null 比喻为 “黑洞”,比较形象恰当。
---
我们的定时任务、异步 MQ 的 jar 包程序等都会使用 System.in.read() 等阻塞程序,防止程序退出
但是,
使用 tail -f /dev/null 会永久阻塞
---
启动一个jar,后台运行,
然后,使用这个命令,传入jar的pid,可以停止这个jar
(扩展:可以利用tail -f /dev/null
让容器一直处于runing状态
利用tail -f /dev/null命令防止container启动后退出(示例代码)_136.la)
----
tail --pid=$pid -f /dev/null
// ↑ 这种写法可以终止(jar)进程、↓ 使用man命令,查看得到的结果
with -f, terminate after process ID, PID dies
(同 -f 一起使用,当 PID 所对应的进程死去后终止)
---
77.nohup
nohup ./xxx.sh &
Linux 下后台运行脚本(防止退出Xshell后程序中断)_林胖胖哒的博客-CSDN博客
78.lsof
lsof -i:port
Linux命令 lsof -i:端口号 ——有什么用途_sun0322-CSDN博客
79.ln
创建硬链接,软连接(符合链接 Symbolic Link)
===
ln -s /home/ubuntu/DATA/009_Jellyfin/media/TV/相棒/第17季 ./
===
80.unlink 解除软连接
81.which
查看执行文件的位置
(搜索某个系统命令的位置,并且返回第一个搜索结果。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 )
which sss
/bin/sss
82.特殊符号【"】(双引号) 与【'】单引号
・双引号中的变量${XXX},可以输出对应的值
・单引号中的变量${XXX}, 直接按照【${XXX}】原来的样子执行。
下面是例子
#!/bin/bash
DAYS=2
DATE1=`date +%Y%m%d --date='${DAYS} days ago'`
DATE2=`date +%Y%m%d --date="${DAYS} days ago"`
83.符号【&&】、【||】
&&:用来执行条件成立后执行的命令
||:用来执行条件不成立后的执行命令
。。。
RETCODE=$?
[ $RETCODE -ne 0 ] && return $RETCODE
linux之shell命令——条件判断(&& || test)_shang_feng_wei的博客-CSDN博客
84.basename
basename /tmp/test/file.txt
file.txt
basename /tmp/test/file.txt .txt
file // 指定后缀时,可以去掉后缀(上面例子中,指定了后缀 .txt)
85.gunzip
可以解压缩 gz 结尾的文件
86.locale // 命令
sxz001@sxzap01:~$ locale -a
C
C.UTF-8
en_US.utf8
POSIX
(C对应ASCII编码)
87.LANG // 系统变量 // Language的缩写
sxz001@sxzap01:~$ echo $LANG
en_US.UTF-8
sxz001@sxzap01:~$
指定执行命令时,指定系统显示所用的语言
LANG=C tar -zxvf xxx.gz
88.安装语言包・查看默认语言设置
sudo apt-get install language-pack-zh-hans
cat /etc/default/locale
---
安装之后
89.showmount
#查询本机nfs共享目录情况
showmount -e localhost
显示效果如下
/AAA/BBB/CCC 192.168.1.122/24,192.168.1.123/24
含义:
(对 192.168.1.122,192.168.1.123者两个IP地址共享此目录)
前提,需要启动服务
service rpcbind start
service nfs start
NFS挂载
英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
Linux NFS挂载 - 整合侠 - 博客园 (cnblogs.com)
90.Linux的shell命令,直接在终端执行。
・写成一行,需要分号(分号相当于换行)
if [ -d /AAA/BBB/ccc ]; then echo "111"; fi
・改行时(不需要分号) ,以下命令,也可以直接在终端执行
if [ -d /AAA/BBB/ccc ]; then
echo "111"
fi
・其他 for // for后面,有两层括号式正确的
for ((c=1;c<=5;c++)); do ls -l /AAA/BBB/CCC/xxx*.log; sleep 3; done
・其他 while
while true; do TIME=`date "+%H:%M:%S"`;FILENAME=`ls -l | grep txt`;echo "${TIME},${FILENAME}";sleep 1; done
91.特殊符号【{}】 大括号
1.用法1
对大括号中的以逗号分割的文件列表进行拓展。
如
touch {a,b}.txt
结果为
a.txt b.txt。
对大括号中以点点(…)分割的顺序文件列表起拓展作用,
如:
touch {a…d}.txt
结果为
a.txt b.txt c.txt d.txt。
2.用法2
变量 ${AAA_BBB}
3.用法3
xargs -i cp {} /AAA/AAA
传递前面管道得到的参数
find /AAA/BBB/CCC/ -maxdepth 1 -type f | xargs -i cp {} /Work/Back
92.gzip
gzip通常用于文件压缩,但是不能压缩文件夹,并且压缩完原文件不保留
并且, 压缩后文件的 【时间戳】 还是压缩对象文件 压缩前的【时间戳】,
即保留 文件【时间戳】信息
使用gzip命令压缩, gunzip命令解压缩
同样,解压的时候,原压缩文件不保留
生成的文件,后缀【.gz】
扩展【.tgz】
tar -zcvf examples.tgz examples
93.mount
在linux当中所有的存储设备如u盘、光盘、硬盘等,都必须挂载之后才能正常使用。
mount [参数] /dev/sdb1(需要挂载的分区) /sdb1(挂载目录)
94.unmount
---
umount [-ahnrvV][-t <文件系统类型>][文件系统]
umount /AAA/BBBB/CCC
95.iconv
Linux下iconv命令对文件编码进行转换_shimadear的博客-CSDN博客_iconv iso-8859-1
iconv -f sjis -t utf8 yourFileName
---
AIX系统时
出错:iconv -f utf8 -t sjis yourFileName
正常:iconv -f utf-8 -t sjis yourFileName
---
2022想定外パターンで検索時、wcにパイプしない、そのまま出力する。// 2021年末,YYYY的Bug有无确认。
2021-12:grep '\"2021\-12' ./*.csv | wc
2022-12:grep '\"2021\-12' ./*.csv | tail -3 | xargs iconv -f sjis -t utf8
---
96.tcpdump
tcpdump -i any dst host aa.bbb.ccc.com -s0 -A
tcpdump –i eth0 ’port 1111‘ -X -c 3
97.★★★ 实际应用 ★★★ 【if else】【字符串包含】【字符串比较】
功能:根据文件包含的字符,文件名,文件后缀,来判断文件类型
注意:
・等于号两边要有空格
・=~ 可以判断是否包含某个字符串 // abc* 虽然也可以判断,但并不是所有的shell都好用
・ ;then 写在了一行,如果不写分号,then可以换行写 // 分号 ; 起到了换行的作用
・变量定义 可以时 $FILE_NAME 也可以是 ${FILE_NAME}
(如果有两个变量 【FILE_NAME】 【FILE_NAMEA】 )
echo ${FILE_NAME}A
・定义字符串时,字符串没有空格,那么有没有引号"的效果都是一样的
・两个括号,[[ expression ]] // 双方括号命令提供了针对字符串比较的高级特性
if [[ "${FILE_NAME}" =~ "abc" ]] ; then
FILE_TYPE="abc"
elif [[ "${FILE_NAME}" == "aaa" ]] ; then
FILE_TYPE="aaa"
else
FILE_TYPE=`echo ${FILE_NAME} | awk -F "." '{print $2}'`
fi
96.time 查看命令性能 (不同于 windows 的time)
97.locale
查看系统默认编码
sxz001@sxzap01:~$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
sxz001@sxzap01:~$
相关联内容
JVM运行时,不知道编码,默认使用系统编码
java -Dfile.encoding=UTF-8 XXX.java
locale 英[ləʊˈkɑːl] n. 场所,现场
locate 英 [ləʊˈkeɪt] v. 位于;定位,找出…的准确位置;定居
98.native2ascii (转换 \uXXXX unicode )
native2ascii -reverse yourUxxxFileName
reverse v. 颠倒,倒转;倒退;逆转;调换
99.zcat
可以直接查看【xxxx.gz】文件中的内容。(无需解压)
---
100.perl
UNIX平台下历史悠久的脚本语言,擅长基于正则表达式的文本处理。
例:把Linux换行,变为Windows换行
perl -p -e 's/\n/\r\n' /XXX/XXX/a.txt > /XXX/XXX/b.txt
perl参数
-e 执行命令,也就是脚本
-p 自动循环+输出,也就是while(<>){命令(脚本); print;}
===
101.curl
curl //Liunx中,比windows中,有更多参数可以使用
https认证使用
curl -k -v -F "key1=valuse1" -F "key2=value2" https://xxxx.xxx/aaa/bbb
各个参数介绍
// F:Form 模拟用户在浏览器上点击“submit”按钮提交表单的操作。 比如,要提交存储密码的文件到服务器上,命令为:curl -F password=@/etc/passwd
// k: 接受服务器的ssl证书而不管合不合法。参数“-k”等同于“--insecure”。
// v:verbose 显示一次 http 通信的整个过程,包括端口连接和 http request 头信息。
参数 -k 忽略证明书认证 (在Linux系统中,curl 有这个参数)
-k, --insecure
(TLS) By default, every SSL connection curl makes is verified to be secure. This option allows curl to proceed and oper乚
ate even for server connections otherwise considered insecure.
The server connection is verified by making sure the server's certificate contains the right name and verifies success乚
fully using the cert store.
See this online resource for further details:
https://curl.haxx.se/docs/sslcerts.html
See also --proxy-insecure and --cacert.
登录使用
curl -u 'bob:12345' https://google.com/login
参数 -U
-u参数用来设置服务器认证的用户名和密码
curl -u 'bob:12345' https://google.com/login
上面命令设置用户名为bob,密码为12345,
然后将其转为 HTTP 标头Authorization: Basic Ym9iOjEyMzQ1
指定客户端证明书
curl --cert client.crt --key client.key --insecure https://此处添加自己的网址及端口
参数 m 指定超时等待时间
curl -I -m 5 hostName
curl的错误类型
curl: (6) Could not resolve host - 无法解析主机名或域名。
curl: (7) Failed to connect to localhost po除此之外,在使用curl命令时,可能会遇到以下错误类型:
错误代码 1:表示无法连接到远程主机。
错误代码 2:表示无法读取本地文件或无法打开本地文件。
错误代码 3:表示无法执行指定的命令。
错误代码 4:表示FTP服务器返回一个错误代码。
错误代码 5:表示无法解析URL或使用了无效的协议。
错误代码 6:表示无法解析主机名。
错误代码 7:表示连接被拒绝。
错误代码 22:表示服务器返回了一个错误的HTTP状态代码。
错误代码 28:表示连接超时或操作超时。
错误代码 56:表示接收到了一个无效的响应头。
这些错误类型可能会因为不同的原因而出现,例如网络连接问题、文件权限问题、服务器配置问题等等。在遇到错误时,可以根据错误代码来确定具体的原因,并尝试解决它。
====
102.set
主要对于 IBM的AIX Server,需要执行下面命令,如果不执行,key【Backspace】不好用。
set -o emacs
----
103.openssl
・目的:
从xxxx.p12文件(客户端证明书的密码)中,生成「crt file」、「key file」供Postman、HttpClient的代码使用
(旧版本Postman无法使用 xxx.p12, 需要使用 crt 和key者两个文件)
(HttpClient的代码,也使用这两个文件)
(在Linux或者AIX Server中,都有openssl这个命令)
导出公钥(证书)(crt)
openssl pkcs12 -in YourCert.p12 -clcerts -nokeys -out cert.crt
输入YourCert.p12的密码
导出秘钥(key)
openssl pkcs12 -in YourCert.p12 -nodes -nocerts -out private_key.key
输入YourCert.p12的密码
(选项-nodes不是英文单词“nodes”,而是“no DES”。 当作为参数给出时,这意味着OpenSSL不会encryptionPKCS#12文件中的私钥)
xxx
104.特殊符号【~】
代表当前登录用户的用户目录,
经常和「ssh sftp」命令一起使用,使用公钥登录其它系统
比如
ssh -i ~/.ssh/id_rsa_XXX userXXX@serverXXX "mkdir -p /Work/Test/test001"
登录 @serverXXX 服务器, 创建文件夹
====
105.sftp之参数【-b】
-b batchfile
Batch mode reads a series of commands from an input batchfile instead of stdin.
echo "put -r /XXX/XXX/xx1 /Work/XXX/XXX/xx1" > sftp_input
echo "put -r /XXX/XXX/xx2 /Work/XXX/XXX/xx2" >> sftp_input
sftp -i ~/.ssh/id_rsa_XXX -b sftp_input userXXX@serverXXX
xxx
106.date
显示示【秒数】对应的【时间】 (<秒数> 是指从 1970 年 1 月 1 日至今的秒数)
date -d @1609459200
显示,从 1970 年 1 月 1 日至今的秒
date +%s
107.sh -xe 参数是什么意思
sh -xe 是一种 shell 命令的参数组合,它有以下含义:
-x:在执行每条命令之前,输出该命令及其参数
-e:如果任何命令返回非零状态(即错误状态),则立即退出 shell
因此,使用 sh -xe 命令可以在执行脚本时,输出每个命令的执行情况,并在遇到错误时立即停止脚本的执行。这对于调试脚本和快速发现问题非常有帮助。
108.grep 查询不到时, 也能返回 0
对应其它命令,下面这种方式也适用
grep "pattern" file || echo 0
109.base64
查看base64编码对应的内容
echo 'YmFzZTY0IGVuY29kaW5n' | base64 -d
xxx
110.bc
bc 是 "Basic Calculator" 的缩写,是一种用于执行数学运算的命令行计算器程序。
===
在 Linux 中,您可以使用命令行计算器 bc 来直接计算数字。以下是使用 bc 进行简单计算===
在 Linux 中,退出 bc(一个用于计算器的命令行工具)的方法是输入 quit 或 exit 命令,然后按下回车键。这将使 bc 停止并返回到命令行提示符
xxx
111.known_hosts 中 ssh-rsa 的值 是根据什么生成的
known_hosts 文件中的 ssh-rsa 值是根据远程主机的公钥生成的。当您第一次连接到一个远程主机时,您的SSH客户端会将该主机的公钥保存在known_hosts文件中。每次连接到该主机时,SSH客户端都会验证该主机的公钥是否与known_hosts文件中的相同,以确保您正在连接到正确的主机。如果公钥【密钥指纹信息】不匹配,SSH客户端会发出警告并停止连接。这有助于保护您的计算机免受中间人攻击。
====
known_hosts 文件不存储服务器的公钥信息。known_hosts 文件是用来存储已知主机的密钥指纹信息,以便在与主机建立 SSH 连接时进行验证。
当你首次连接到一个 SSH 服务器时,你的 SSH 客户端会将服务器的公钥指纹保存在 known_hosts 文件中。下一次连接时,客户端会比对服务器的公钥指纹和 known_hosts 文件中相应条目的指纹是否一致,以确保你连接的是同一个已知主机,以防止中间人攻击。
因此,known_hosts 文件只保存服务器的公钥指纹信息,而不是完整的公钥信息。公钥信息通常可以在服务器的证书中找到。
===
主机的公钥和主机的公钥指纹是密切相关但含义略有不同的概念。
--
主机的公钥是在SSH通信中用于进行加密和验证的一对密钥对中的公钥部分。它是由主机生成并提供给客户端,供客户端用来加密数据并验证主机的身份。主机的公钥是一个较长的字符串,通常以SSH格式开头,例如"ssh-rsa AAAAB3NzaC1yc......"。
---
主机的公钥指纹是主机公钥经过特定算法(如MD5、SHA-256等)计算得到的一个较短的唯一标识。它是用于验证主机公钥的有效性,并用作主机身份的摘要信息。公钥指纹通常是一个以冒号分隔的十六进制字符串,例如"de:ad:be:ef:12:34:56:78:90:ab:cd:ef:12:34:56:78"。
---
区别在于公钥是主机提供给客户端用于加密和验证的长字符串,而公钥指纹是根据公钥计算得到的短字符串,用于在第一次连接时验证主机身份的有效性。公钥用于实际的加密和验证过程,而公钥指纹用于验证公钥的有效性和一致性。
==
==
xxx
112.如何查看主机的公钥信息
cat /etc/ssh/ssh_host_rsa_key.pub
xxx
===
这个文件是如何生成的,
/etc/ssh/ssh_host_rsa_key.pub
文件是 SSH 主机的 RSA 公钥文件,它是在 SSH 服务器首次安装时自动生成的。在 SSH 服务器配置中,你可以定义要生成的密钥类型和文件路径。这个公钥文件包含了 SSH 服务器的公钥信息,用于向连接到该服务器的客户端验证身份。
====
113.shell 中 ${0##*/} 是什么意思-----获取脚本文件的名称
在shell中,${0##*/}是一种参数替换的用法,其作用是获取脚本文件的名称。
具体解释如下:0
表示当前脚本的名称,即
0表示当前脚本的名称,即0是一个内置的变量,它会保存当前执行的脚本的名称。##是一种模式匹配操作符,表示删除匹配的最长字符串。
*/表示任意字符和路径分隔符("/")的组合。
所以,{0##*/}的含义是从0中删除最长的以"/"为分隔符的字符序列。
举个例子,如果当前的脚本文件的路径和名称是"/path/to/script.sh",那么${0##*/}会删除"/path/to/",只返回"script.sh"作为结果
xxx
114.hostname
在管理员权限下,使用下面命令可以直接修改主机名字
hostname newhostname
这种方式修改,只是临时修改,如果服务器重启,会变回旧的名字
也就是说这个命令不仅能查看主机信息,还能修改主机信息!!!
115.printf
#!/bin/bash
logInfo() {
# %-60s 格式为左对齐且宽度为60的字符串代替('-'表示左对齐),不使用则默认右对齐。
printf "%s%-60s%s\n" "`(date '+%Y-%m-%d %T')`[INFO] " "$1" "$2"
}
logInfo "MessageXXXXXXXXX" "ITEM_XXXXX"
logInfo "MessageXXXXXXXXXaaaa" "ITEM_XXXXX"
========
xxx
116.特殊符号【^M】【 ^!】 等等这些转义字符,以及其含义
在Linux中,^M和^!都是特殊字符,表示对应的控制字符。它们的含义如下:
・^M(Ctrl+M):回车符(Carriage Return)。在Unix/Linux系统中,行结束符通常是换行符(n),而在Windows系统中,行结束符是回车换行符(rn)。因此,当从Windows系统复制文本到Linux系统时,可能会带有^M字符,需要将其删除或转换为换行符。 转义字符:r
ーーーーーーーーーーーーーーーーーーーーー
・^!(Ctrl+!):表示ASCII码为33的字符。在Linux系统中,它没有特殊含义,通常被视为普通字符。可以直接在命令行或文本中使用。
需要注意的是,这些控制字符在不同上下文中可能会有不同的用途和含义。因此,在使用时要根据具体情况进行处理,以确保达到预期的效果。
xxx
在Linux中,除了上面提到的^M和^!之外,还有一些其他的特殊字符需要使用^进行表示,它们的含义如下:
^A(Ctrl+A):表示ASCII码为1的字符。在命令行和文本编辑器中,表示光标移动到行首。
^B(Ctrl+B):表示ASCII码为2的字符。在命令行和文本编辑器中,表示光标向左移动一个字符。
^C(Ctrl+C):表示ASCII码为3的字符。在终端中,按下Ctrl+C可以中断当前正在执行的程序或命令。
^D(Ctrl+D):表示ASCII码为4的字符。在终端中,按下Ctrl+D表示输入结束,可以触发终端的文件结束符(EOF)。
^E(Ctrl+E):表示ASCII码为5的字符。在命令行和文本编辑器中,表示光标移动到行尾。
^F(Ctrl+F):表示ASCII码为6的字符。在命令行和文本编辑器中,表示光标向右移动一个字符。
还有一些其他的特殊字符也可能通过使用^进行表示,具体取决于使用的软件和上下文环境。在终端中,一些控制字符可能会被解释为特殊功能,因此在使用时需要注意。
117.sdiff、diff、cmp 效果比较
===
diff
sdiff
cmp
xxx
118.XXX
xxx
119.XXX
xxx
■AIX
1.查看端口对应的进程 (Websphere Server)
> netstat -Aan | grep 56789 // your port 56789
XXXXXXXXXX tcp 0 0 *.56789 *.* LISTEN> rmsock XXXXXXXXXX tcpcb
XXXXXXXXXX is being held by process NNNNNNN (java.) // PID NNNNN> pl -elf | grep NNNNNNN
XXXXXXXXXXXXXXXXXXXX... xxxCellxxxnode xxxxServerxxx
====
2. shell // AIX切换壳
AIX操作系统,模式的壳是ksh,换一个壳(shell),即可实现tab自动补全,↑↓查看前后命令
如何换壳,直接执行下面的命令即可
shell
xxxx
3.rm 删除文件
-e 相当于 Linux中的 -v: 显示文件删除后的信息
-e Displays a message after each file is deleted.
rm -fre
4.csum
csum -h SHA1 FileName.txt
5.find運用(AIX)
find /AAA/BBB -type f | sort | xargs sum
====
// フォルダも表示する。 p:フォルダ表示時、末尾「slash」も表示する。「/AAA/BBB/aaa/」
find /AAA/BBB | sort | xargs ls -lpd
6.istat 查看文件最新修改时间
istat 查看文件最新修改时间 //Purpose: Examines i-nodes
last updated: xxxx // chmod chown 命令会影响此时间
last modified: xxxx // chmod chown 命令 或者 修改文件内容会影响此时间
last accessed: xxxx // cat等命令会影响此时间
purpose [ˈpɜːrpəs] n. 目的;意志;用途;意义
examine [ɪɡˈzæmɪn] v. 调查;诊察;检查;检测;考试;审问
===
7.AIX 查看用户上一次登录・用户是否被锁
/etc/security/lastlog
注意:这个文件里面显示的时间是,秒数。(<秒数> 是指从 1970 年 1 月 1 日至今的秒数)
这里面有两个时间
time_last_login
time_last_Unsuccessful_login
==
在Linux中,可以使用【date -的@1691713543】查看秒数对应的时间
===
Linux并没有上面的文件,使用下面命令,查看用户
passwd -S YourUserID
在上面的【18.passwd】中查看详细
==
8.在 AIX 系统中,如果没有安装 unzip 命令,可以尝试使用以下命令解压缩 Zip 文件:
使用 jar 命令:
jar -xvf filename.zip
xxx
9.查看磁盘容量
进入要查看的目录
cd /AA/BB
查看当前目录,磁盘使用情况
df -m .
查看当前目录下,站容量最多的7个目录
du -sm ./*|sort -nr|head -n 7
xxx
10.查看字符对应的16进制编码 【od】 (linux 也能用)
echo "a" | od -t x1
xxx
echo "ー" | od -t x1
==
SJIS(Shift-JIS)和EUC-JP(Extended Unix Code-JP)是两种常用的日语字符编码方案。
字符集范围:
- SJIS:由日本电脑制造商开发,支持日语中的大部分字符,包括假名、汉字、罗马字等。
- EUC-JP:也是由日本开发,与SJIS类似,支持日语字符集,包括假名、汉字、罗马字等。
编码方式:
- SJIS:采用双字节编码方式,每个字符占用2个字节,其中第一个字节的范围是0x81-0x9F和0xE0-0xFC,第二个字节的范围是0x40-0xFC。
- EUC-JP:同样采用双字节编码方式,每个字符也占用2个字节,第一个字节的范围是0xA1-0xFE,第二个字节的范围也是0xA1-0xFE。
兼容性:
- SJIS:在Windows系统中广泛使用,支持大部分的软件和应用程序。
- EUC-JP:在Unix/Linux等操作系统中常用,也有一些应用程序和工具支持该编码。
其他区别:
- SJIS有时会产生字节流冲突的问题,因为某些字符在不同的上下文中有不同的编码,这可能导致乱码或无法正确解码。
- EUC-JP在一些应用中可能会有更好的兼容性和处理效果。
总的来说,SJIS和EUC-JP都是常见的日语字符编码方案,具有相似的字符集支持,但在具体的应用环境和兼容性方面可能有一些差异。选择哪种编码方案应基于具体的需求和应用场景进行判断。
====
编码通过下面方式指定
===
xxxx
11.last【用于显示登录和注销的用户会话记录】
打开系统的登录日志文件,通常是/var/adm/wtmp文件。您可以使用以下命令查看该日志文件的内容:
last
该命令会列出最近的用户登录和注销记录。每行记录都会显示用户名、登录日期和时间、登录的IP地址(如果适用),以及注销的日期和时间(如果用户使用了exit命令退出)。如果用户没有使用exit命令退出,那么注销的日期和时间可能为空。
==
在AIX系统中,last命令用于显示登录和注销的用户会话记录。以下是如何使用last命令的基本语法:
last [选项] [用户名] [终端]
一些常用的选项包括:
-a
:显示终端名称。-d
:显示终端断开连接的时间。-F
:以完整的日期和时间格式显示记录。-R
:以相对时间格式显示记录。-s
:显示指定日期/时间之后的记录。下面是一些示例:
- 显示所有用户的登录和注销记录:
last
- 显示指定用户的登录和注销记录:
last username
将"username"替换为您要查看的特定用户名。
- 显示指定终端的登录和注销记录:
last -t tty1
将"tty1"替换为您要查看的特定终端。
- 显示指定日期/时间之后的记录:
last -s "YYYY-MM-DD HH:MM:SS"
将"YYYY-MM-DD HH:MM:SS"替换为您指定的日期和时间。
- 显示完整的日期和时间格式的记录:
last -F
请注意,要使用last命令,您需要以root账户或具有足够权限的账户登录到AIX系统。此外,AIX系统中的登录日志通常存储在/var/adm/wtmp文件中。
xxx
12.输出文件 无行换 (AIX ksh壳下面) 【\c】
echo '20231013\c'
xxx
13.nslookup 获取给定IP地址的服务器名称
nslookup <IP地址>
或者
host <IP地址>
这些命令会查询DNS服务器,并返回与给定IP地址关联的主机名。请确保在运行命令之前,已经正确配置了DNS服务器。
xxx
14.prtconf 查看系统设置
查看 内存大小(不过从结果来看,像是磁盘容量,不像是内存容量)
prtconf | grep MB
xxx
15.【rmsock】 AIX根据端口号,查找PID
windows可以用命令netstat -ano来查端口对应的进程的pid.
aix却并不能,aix需要使用下面的命令过程:
●Step1
netstat -Aan | grep 1334
===============
f10002000043c398 tcp4 0 0 *.1334 *.* LISTEN
===============●Step2
rmsock f10002000043c398 tcpcb
===============
The socket 0x43c008 is being held by proccess 217248 (writesrv).
===============●Step3
ps -elf | grep 217248=============================================
详见【74.1.netstat、rmsock (AIX)】
xxx
16.svmon 【AIX中 类似 Linux系统中 free 的命令】
svmon -G -O unit=GB
--
$ svmon -G -O unit=GB,timestamp=on
[oracle@guangdong_rac1 ~]$svmon -G -O unit=GB,timestamp=on
Unit: GB Timestamp: 14:40:29
-------------------------------------------------------------------------------
size inuse free pin virtual available
memory 249.50 216.28 33.2 35.3 84.2 116.82
pg space 8.00 0.20
work pers clnt other
pin 27.0 0 0.01 8.30
in use 84.2 0 132.12
----
size:工作集的逻辑页面大小
inuse:已经被分配的页面数
free:可用的空闲页面数
pin:锁定的页面数
virtual:虚拟页优先级LRU链表的比例
mmode:工作模式下的可能的最大页面数
memclient:佔用内存的客户数量
memory:实际内存的大小
pool: 内存池的大小
xxx
17.du【du】查看某个目录,容量占用多的文件夹
du -sg /DATA/* | sort -rn | head -n 10
【其他扩展使用】直接查看某个文件的大小,MB单位显示
du -sm /XXX/XXX/yourFile
xxx
查看当前目录下,站容量最多的7个目录
du -sm ./* | sort -nr | head -n 7
g和m应该代表容量单位 GB MB
===
18.df【df】查看===文件系统===的=磁盘===使用情况,百分比
df -g /DATA
(Linux不支持这个参数, AIX中,是 GB 单位显示 的意思)
(df /DATA)这种方式,只显示 /DATA 的信息
即,mount命令查看出的磁盘
===
19.LInux 的 du 和 dh 命令的区别
xxx
du命令和dh命令都是用于检查磁盘空间使用情况的Linux命令,但它们之间有一些区别。
du命令(磁盘使用量):du命令用于显示目录中文件和子目录的磁盘使用空间。它递归地检查指定目录及其所有子目录,并返回每个文件和目录的磁盘使用量。du命令默认以字节为单位显示使用量,可以使用"-h"选项以人类可读的形式(如KB、MB)显示使用量。
df命令(磁盘空间 disk free):df命令用于显示文件系统的磁盘空间使用情况。它列出文件系统的名称、容量、已使用空间、可用空间和挂载点等信息。默认以"K"为单位显示容量和使用量,也可以使用"-h"选项以人类可读的形式显示。
总结:
- du命令用于检查目录中文件和子目录的磁盘使用空间。
- df命令用于显示文件系统的磁盘空间使用情况。 所以,它们的主要区别在于du命令是显示目录和文件的使用量,而df命令是显示文件系统级别的磁盘空间使用情况。
==
20.lsuser
===
查看密码过期策略
lsuser -f userName | grep maxage
13 // 过多久(周数)之后用户必须修改密码?
0 //永远不过期
===mi
xxx
21.账号密码相关信息
・查看上次修改密码时间
/etc/security/passwd
===java
Date dd = new Date();
long tt = 1603334444;
tt = tt * 1000;
dd.setTime(tt);
System.out.println(dd);
・查看上次登录时间,登录失败时间・次数
/etc/security/lastlog
xxx
22.
xxx
23.
xxx
■其它
1.AIX 无法补全的原因
检查AIX操作系统root使用的shell,发现为ksh,需要修改为bash,换一个壳,即可实现tab自动补全
(注:Linux默认创建shell为bash,所以Linux可以自动补全)
检查・变更
cat /etc/passwd | grep root
root:!:0:0::/root:/user/bin/ksh
⇒
root:!:0:0::/root://bin/bash
2.sh 与 ksh
以 #!/bin/ksh 开头
使用 sh 执行 一个 以 #!/bin/ksh 开头的 ksh 文件,到底是 ksh 执行 ,还是 sh 执行
如果你使用sh来执行一个以#!/bin/ksh开头的ksh文件,实际上还是由ksh来执行。这是因为在脚本中指定了解释器路径,即#!/bin/ksh,所以系统会使用ksh来解释和执行文件内容,而不是使用sh。
使用 sh 执行 一个 以 #!/bin/ksh 开头的 sh 文件,到底是 ksh 执行 ,还是 sh 执行
如果你使用sh来执行一个以#!/bin/ksh开头的sh文件,实际上还是由ksh来执行。这是因为在脚本中指定了解释器路径,即#!/bin/ksh,所以系统会使用ksh来解释和执行文件内容,而不是使用sh。
介绍几个 sh 与 ksh 语法之间的区别
当使用sh和ksh来执行脚本时,可能会遇到一些语法方面的差异。以下是一些sh和ksh之间可能存在的语法区别:
数组赋值:
- 在sh中,数组赋值不是直接支持的,通常会使用间接方式来模拟数组。
- 在ksh中,可以直接使用数组并进行赋值和访问。
命令替换:
- 在sh中,使用 `command` 来进行命令替换。
- 在ksh中,也可以使用 `command`,同时也支持 $(command) 的形式来进行命令替换。
变量声明与赋值:
- 在sh中,变量赋值时不需要使用关键字declare或typeset。
- 在ksh中,可以使用declare或typeset关键字来声明变量,并指定变量的属性。
算术运算:
- 在sh中,可以使用expr或者$(( ))来进行算术运算。
- 在ksh中,也支持expr和$(( )),同时还可以使用let来进行算术运算。
这些是一些可能存在的sh和ksh语法上的区别,实际上语法的差异还可能更多。在编写脚本时,建议查阅相关的文档或者参考书籍,以了解具体的差异并编写兼容性更好的脚本。
---
■更多命令
【Linux】一步一步学Linux系列教程汇总(更新中......)_嵌入式开发工程师---欢迎大家一起交流-CSDN博客_csdn dengjin
---