Linux基本命令
Linux 基本命令
1、图形化界面
WINDOWS图形化界面:GUI— graphical(图形的) user interface 图形用户界面
GNOME–GNU network object(对象) model environment GNU网络对象模型环境
【Ctrl】+【Alt】+F1/F2/F3/F4/F5/F6,environment
【Ctrl】+【Alt】+F1,进入图形化界面。
【Ctrl】+【Alt】+F2-F6 进入命令行界面
2、命令行界面
- a、点击活动–终端
【Ctrl】+【Alt】+F2~F6进入命令行模式。
一般我们学习都是在伪终端上操作。实现的效果和命令行模式是一样的。 b、使用putty登录
开启多个伪终端 ctrl+shift+n
放大伪终端的字体大小–【ctrl】+【shift】+【+号】
缩小伪终端的字体大小–【ctrl】+【-号】
3、系统文件和目录
1、文件类型
普通文件 -
目录文件 d (directory)
链接文件 l
特殊文件 c(character字符) b(block快)
2、文件:通过颜色来判断文件类型和权限
绿色文件: 可执行文件,可执行的程序
红色文件:压缩文件或者包文件
蓝色文件:目录
白色文件:一般性文件,如文本文件,配置文件,源码文件等
浅蓝色文件:链接文件,主要是使用ln命令建立的文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件
3、linux常见的后缀名(扩展名)
.conf 配置文件
.log 日志文件
.syslog 系统日志文件
.cfg 系统配置文件
.i686 系统文件
.sh 脚本文件
2、目录
/ 根目录:是linux文件系统的起点
/bin 存放linux系统中最基本的命令,普通用户有权限执行 --binary–二进制
/boot 存放启动linux系统所必需的的文件,包括内核文件、启动的配置文件-----boot引导
/boot目录通常被划分为独立的分区,称为/boot分区
/dev 存放linux系统中的磁盘、光驱等各种设备----device—装置、设备
/etc 存放linux系统及各种配置文件 ------------Editable Text Configuration–可编辑的文本配置
/home 存放所有普通用户的默认工作目录 也叫普通用户的家目录
/lib 库文件存放目录。-----library
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。—media 媒体
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。—mount 临时文件系统的安装点
/opt:有些软件包会被安装在这里,—optional 可选择的–Optional application software packages–可选的应用软件包
/proc 系统进程目录 比如cpu、内存的信息都存放在该目录中----Processes 进程
/root 管理员的主目录
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
/sbin 超级用户可以使用的命令的存放目录-----Superuser Binaries
/srv:存放服务启动后需要提取的数据
/sys: 该目录下的所有子目录代表着系统中当前被发现的所有块设备
/tmp 这个目录是用来存放一些临时文件的。— Temporary
/usr 存放其他用户应用程序,通常被划分成很多子目录,用户存放不同类型的应用程序—Unix Shared Resources-- 用于存放共享的系统资源
这个目录就好比 windows的program files
/var 存放系统中经常需要变化的一些文件,比如系统日志文件、缓冲缓存文件等等----Variable–变量
//;;
/bin 存放普通用户有权限执行的命令
/sbin 存放管理员用户有权限执行的命令
/home 普通用户的用户家目录
/root 超级管理员用户root用户的家目录
/boot 存放系统启动的引导文件和内核文件
/etc 存放配置文件
/dev 存放设备文件
/proc 系统进程目录,cpu、内存的相关信息存放在这里
/mnt 临时挂载点
/var 主要存放日志文件
[root@chenyu ~]#
root–代表当前用户
chenyu–主机名称
~ —当前的工作目录,其中~代表当前用户的家目录
#----代表着当前用户是超级管理员用户
[chenyu@chenyu ~]$
$—代表着当前用户是个普通用户
root用户的用户家目录是/root/目录
普通用户的家目录是/home/普通用户名命名的目录名称
比如chenyu用户的家目录是/home/chenyu/
pwd—显示当前的工作目录
cd —切换目录
四、常见的系统命令
1、查看内核版本
uname -r
4.18.0-80.el8.x86_64
主版本号:4
次版本号:18----偶数(稳定版本)—奇数(开发版本)
末版本号(修订版本号):0-80
el8—enterprise Linux 8
x86_64—支持的架构
2、查询cpu信息
cat /proc/cpuinfo
lscpu
cat— 一次性显示(查看)文件的所有内容
3、查看内存
cat /proc/meminfo
free -m
4、查看设置主机名
hostname --查看主机名
hostname cy.example.com (临时生效)—临时修改主机名,临时的意思是,重启后就失效了
hostnamectl set-hostname rhel8.example.com (永久生效)—永久修改主机名
5、查看IP地址
ifconfig 查看所有网卡的ip信息 ip addr(简写 ip a)
ifconfig ens160 查看ens160网卡的ip信息 ip addr show ens160
6、重启
shutdown -r now 或 reboot
7、关机
shutdown -h now 或 poweroff
8、延迟启动
shutdown -r +15 ‘the system will be rebooted!!!’
rsync
- -a, --archive:归档模式,表示以递归方式传输文件,并保持符号链接、权限、时间戳、组和所有权信息。
- -v, --verbose:详细模式输出。
- -z, --compress:压缩文件数据。
- -r, --recursive:递归到目录中去。
- -u, --update:跳过目标中更新的文件,只传输那些源比目标更新的文件。
- -h, --human-readable:输出文件大小时,使用易读的格式(如 K、M)。
- –delete:删除那些只存在于目标目录中的文件,使得源和目标目录内容一致。
- -e, --rsh=COMMAND:指定使用 ssh 作为远程 shell,也可以指定其他命令。
- -t 或 --times:保持文件时间戳,即文件的修改时间。
- -o 或 --owner:保持文件的所有者信息,即文件的属主。
- -p 或 --perms:保持文件的权限,即文件的读、写、执行权限。
- -g 或 --group:保持文件的组信息,即文件的属组。
- –progress:显示进度,即在传输文件时显示传输的进度条和传输速率。
rsync -a -r --progress hadoop-3.4.0 node02:/opt
top
https://zhuanlan.zhihu.com/p/355962068
lsof
lsof(list open files)是一个列出当前系统打开文件的工具
https://blog.csdn.net/nyist_zxp/article/details/115340302
常用参数
fileName : 输出打开文件 fileName 的所有项;
lsof /usb1
date
常用命令
# 查看系统日期及时间
[root@node01 ~]# date
Thu Feb 9 22:39:01 CST 2023# 以YYYY-MM-DD显示日期
[root@node01 ~]# date +%F
2023-02-09# 以MM/DD/YY显示日期
[root@node01 ~]# date +%D
02/09/23# 以MM/DD/YYYY显示日期
[root@node01 ~]# date +%x
02/09/2023# 获取系统年、月、日
[root@node01 ~]# date +%Y
2023
[root@node01 ~]# date +%m
02
[root@node01 ~]# date +%d
09# 获取系统星期值
[root@node01 ~]# date +%a
Thu
[root@node01 ~]# date +%A
Thursday
[root@node01 ~]# date +%u
4
[root@node01 ~]# date +%w
4
1、命令详解
用法:#date [参数选项] [+格式]
或者:date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]
2、参数说明
参数 | 参数说明 |
---|---|
-d, --date=STRING | 显示 datestr 中所设定的时间 (非系统时间) |
-s, --set=STRING | 将系统时间设为 datestr 中所设定的时间 |
-u, --utc, --universal | 打印或设置协调世界时(UTC) |
–version | 显示版本编号 |
–help | 显示辅助讯息 |
3、时间格式符号
符号 | 符号说明 |
---|---|
% | 印出 % |
%n | 下一行 |
%t | 跳格 |
%H | 小时(00…23) |
%I | 小时(01…12) |
%k | 小时(0…23) |
%l | 小时(1…12) |
%M | 分钟(00…59) |
%p | 显示本地 AM 或 PM |
%r | 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) |
%R | 24小时制方式显示时间,相当于%H:%M |
%s | 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 |
%S | 秒(00…60) |
%T | 直接显示时间 (24 小时制) |
%X | 相当于 %H:%M:%S |
%z | 数字方式显示时区 |
%Z | 字母缩写方式显示时区 |
4、日期格式符号
符号 | 符号说明 |
---|---|
%a | 星期几 ,缩写(Sun…Sat) |
%A | 星期几 ,完整英文星期(Sunday…Saturday) |
%b | 月份 (Jan…Dec) |
%B | 月份 (January…December) |
%c | 直接显示日期与时间 |
%d | 日 (01…31) |
%D | 直接显示日期 (mm/dd/yy) |
%e | 一个月中的第几天,类似%_d |
%F | 完整的日期,相当于%Y-%m-%d |
%h | 同 %b |
%j | 一年中的第几天 (001…366) |
%m | 月份 (01…12) |
%u | 一周中的第几天 (1…7) (1是星期一) |
%U | 一年中的第几周 (00…53) (以 Sunday 为一周的第一天的情形) |
%w | 一周中的第几天 (0…6)(0是星期天) |
%W | 一年中的第几周 (00…53) (以 Monday 为一周的第一天的情形) |
%x | 直接显示日期 (mm/dd/yy) |
%y | 年份的最后两位数字 (00.99) |
%Y | 完整年份 (0000…9999) |
file
查看命令文件类型
[root@gmall opt]# file /usr/sbin/ifconfig
/usr/sbin/ifconfig: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=dff548da1b4ad9ae2afe44c9ee33c2365a7c5f8f, stripped
cut
数据截取
-
-c : 以字符为单位进行分割
-
-d :自定义分隔符, 默认为制表符 \t
-
-s : 与-d一起使用,如果加上-s表示只显示有分隔符的行
-
-f : 与 -d 一起使用, 指定显示哪个区域
以 /etc/passwd 为例,演示以上命令
[root@node01 ~]# cp /etc/passwd .[root@node01 ~]# cut -d: -f1 passwd # 按:分隔,取分隔后的第一列[root@node01 ~]# cut -d: -f1,3 passwd # 按:分隔,取分隔后的第1列和第3列[root@node01 ~]# cut -d: -f1-3 passwd # 按:分隔,取分隔后的第1列至第3列[root@node01 ~]# cut -d: -f1 passwd | cut -c 1 # 按:分隔,取分隔后第一列的第一个字符截取ip地址 [root@node01 ~]# ifconfig ens33 | grep -w "inet" | cut -d" " -f10 192.168.235.11[root@kermit ~]# cat pass database:mysql:sqlserver:oracle country:中国:美国:other 行业:互联网:金融 /home/ftpuser:/bin/bash hello;yes;test[root@kermit ~]# cut -sd: -f1-2 pass #此处加了-s最后一行就不显示,因为它没有:符号 database:mysql country:中国 行业:互联网 /home/ftpuser:/bin/bash[root@kermit ~]# cut -sd: -f2- pass #如果不指定尾列,表示输出从f2到最后的所有列 mysql:sqlserver:oracle 中国:美国:other 互联网:金融 /bin/bash
tr
字符串转换,替换、删除。
- -d 删除字符串1中所有输入字符
- -s 删除所有重复出现的字符序列,只保留第一个。即将重复出现的字符压缩为一个字符。
替换语法
commands|tr 'old_string' 'new_string'# 替换, 替换是进行等额匹配,所以只有四个字符替换成功了
[root@node01 ~]# ifconfig ens33 | grep -w "inet" | tr "inet" "new_inet"new_ 192.168.235.11 ew_mask 255.255.255.0 broadcas_ 192.168.235.255# 去掉重复的空格,只保留第一个空格
[root@node01 ~]# ifconfig ens33 | grep -w "inet" | tr -s " "inet 192.168.235.11 netmask 255.255.255.0 broadcast 192.168.235.255# 删掉字符 1
[root@node01 ~]# ifconfig ens33 | grep -w "inet" | tr -s " " | cut -d" " -f3 | tr -d "1"
92.68.235.# 删掉字符 1和9
[root@node01 ~]# ifconfig ens33 | grep -w "inet" | tr -s " " | cut -d" " -f3 | tr -d "[1,9]"
2.68.235.# 删掉字符 1至3
[root@node01 ~]# ifconfig ens33 | grep -w "inet" | tr -s " " | cut -d" " -f3 | tr -d "[1-3]"
sort
排序, 将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后升序输出。
-
-u : 去除重复行
-
-r : 降序排列,默认是升序
-
-o : 将排序结果输出到文件中上,类似重定向符号 >
-
-n : 以数字分隔,默认是按字符排序
-
-t : 分隔符
-
-k : 第N列
-
-b : 忽略前导空格
-
-R : 随机排序, 每次运行的结果均不同
sort -n passwod # 按照数字升序排 sort -nu passwod # 按照数字去重后升序排 sort -n -t: -k3 passwd # 按:分隔,对第三列进行升序排序 sort -nr -t: -k3 passwd # 按:分隔,对第三列进行降序排序 sort -n passwd -o 1.txt # 将排序后的结果重定向到文件1.txt
wc
统计文件行数
[root@gmall ~]# wc -l zlftext.txt
4 zlftext.txt
[root@gmall ~]# cat zlftext.txt | wc -l
4
ps -fe
打印进程信息
df
查看磁盘空间
[root@gmall opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 198G 1.1G 197G 1% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 103M 95M 53% /boot
tmpfs 98M 0 98M 0% /run/user/0
du
查看当前目录下所有文件所占用的磁盘空间大小
[root@gmall opt]# du -sh ./*
31M ./dubbo-admin-2.6.0.war
153M ./jdk-8u65-linux-x64.rpm
stat
查看文件元数据信息
[root@gmall opt]# stat dubbo-admin-2.6.0.war File: ‘dubbo-admin-2.6.0.war’Size: 32089280 Blocks: 62680 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 134218813 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-31 00:29:42.000000000 +0800
Modify: 2018-03-27 17:54:06.000000000 +0800
Change: 2020-01-31 13:02:16.479957803 +0800Birth: -
fc -l
查看历史执行命令
[root@node02 ~]# fc -l
999 cd conf/
1000 ll
1001 vi zoo.cfg
1002 cd ../
1003 ll
1004 cd
1005 zkServer.sh status
1006 zkServer.sh start
1007 zkServer.sh status
1008 ./beeline.sh
1009 apphome
1010 cd /opt/stanlong/presto/presto-server-0.196/
1011 ll
1012 bin/launcher run
1013 cd
1014 fl -l
man
- 1:用命令(/bin, /usr/bin, /usr/local/bin)
- 2:系统调用
- 3:库用户
- 4:特殊文件(设备文件)
- 5:文件格式(配置文件的语法)
- 6:游戏
- 7:杂项(Miscellaneous)
- 8:管理命令(/sbin, /usr/sbin/, /usr/local/sbin)
cat
- cat : 全量展示文件内的所有内容
- more : 只支持向下翻屏
- less : 可以来回翻屏
- head : 默认展示头十行
- head -n 文件名:显示文件头n行
- tail : 默认展示末尾十行
- tail -n 文件名: 显示文件末尾n行
zip
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
zip -q -r html.zip /home/html
unzip
1、unzip test5.zip 解压压缩文件test5.zip到当前目录;[root@localhost test]# unzip test5.zip
Archive: test5.zipinflating: test5.txt
[root@localhost test]# ll
-rw-r--r-- 1 root root 50 Jul 16 14:50 test5.txt
-rw-r--r-- 1 root root 216 Jul 17 14:28 test5.zip#######################################################################################################2、-l 表示在不解压的情况下查看压缩文件内的文件;[root@localhost test]# unzip -l test5.zip
Archive: test5.zipLength Date Time Name
--------- ---------- ----- ----50 07-16-2022 14:50 test5.txt
--------- -------50 1 file#######################################################################################################3、-v 表示在不解压的情况下查看压缩文件内的文件,且显示更多信息(压缩比率等);[root@localhost test]# unzip -v test5.zip
Archive: test5.zipLength Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----50 Defl:N 48 4% 07-16-2022 14:50 7fa7173c test5.txt
-------- ------- --- -------50 48 4% 1 file#######################################################################################################4、-q 表示不显示执行过程;[root@localhost data]# unzip -q test.zip#######################################################################################################5、-o 表示不询问用户,覆盖原有文件;[root@localhost data]# unzip test.zip
Archive: test.zip
replace data/test/test1.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^Z
[1]+ Stopped unzip test.zip
[root@localhost data]# unzip -o test.zip
Archive: test.zipextracting: data/test/test2.zip#######################################################################################################6、-d 表示指定文件解压缩后所要存储的目录(-d 后面必须接路径,不然会报错,且当路径不存在时会自动创建)
[root@localhost data]# unzip -d -q /data/test/test5 test.zip
error: must specify directory to which to extract with -d option
[root@localhost data]# unzip -q -d /data/test/test5 test.zip
[root@localhost data]# ll
-rw-r--r-- 1 root root 0 Jul 16 12:37 test.txt
jobs
查看后台任务及任务编号
fg
将后台任何在前台展示,按Ctrl+C退出后台任务
env
查看环境变量
grep
-
-i 忽略大小写
-
-v 查找不包含指定内容的行,反向选择
-
-w 按单词搜索
-
-n 显示行号
-
-A 显示匹配行及后面多少行
grep -A 5 'root' /etc/passwd
-
-B 显示匹配行及前面多少行
uniq
去除连续的重复行, 实现去重先要排序
-
-i : 忽略大小写
-
-c : 统计重复行次数
-
-d : 只显示重复行
sort -n 2.txt | uniq # 按数字升序排序后去重sort -n 2.txt | uniq -c # 按数字升序排序后去重, 并统计重复行的次数sort -n 2.txt | uniq -dc # 按数字升序排序, 只显示重复行并统计重复行的次数
tee
双向输出, 从标准输入读取并写入到标准输出和文件。即:双向覆盖重定向<屏幕输出|文本输入>
-
-a 双向追加重定向
echo hello world echo hello world | tee file1.txt # 将 hello world 输出到屏幕,同时输出到文件 file1.txt, 默认会覆盖原文件 cat file1 echo 999|tee -a file1.txt # 在文件file1.txt中追加 999 cat file1
paste
合并文件输出到屏幕,不会改变文件
-
-d : 自定义分隔符,默认是tab,只接受一个字符
-
-s : 将每个文件中的所有内容按照一行输出,文件中的行与行以TAB间隔
cat a.txt hellocat b.txt hello world 888 999paste a.txt b.txt hello hello world888999paste -d'@' a.txt b.txt hello@hello world @888 @999paste -s a.txt b.txt hello hello world 888 999
xargs
将上一行命令的输出作为下一个命令的参数,通常和管道一起使用
-
-a file: 从文件读入作为下一个命令的参数
-
-E flag : flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志时就停止
-
-p : 当每执行到一个 argument 时就询问一次用户
-
-n num: 后面加次数,表示命令在执行的时候一次用几个argument,默认是所有的。
-
-t : 先打印命令,然后再执行
-
-i 或者 -I : 这个参数得看linux是否支持了,将xargs的每项名称,一般是一行一行赋值给{}, 可以用 {} 代替
-
-r no-run-if-empty : 当 xargs的输入为空时则停止xargs, 不再去执行了。
-
-d delim 分隔符,默认的xargs的分隔符是回车, argument 的分隔符是空格,这里修改的是xargs的分隔符
cat b.txt hello world 888 999xargs -a b.txt # 从文件读入数据作为命令参数, 这里是按行输出的 hello world 888 999xargs -a b.txt -d "@" # xargs 默认分隔符是换行,把分隔符替换成"@"之后换行符起作用。 hello world 888 999xargs -a b.txt -E 999 # 从文件读入数据作为命令参数,当读到999时就不再往下读了 hello world 888xargs -a b.txt -p # 从文件读入数据作为命令参数,读一次询问一次 echo hello world 888 999 ?...y hello world 888 999xargs -a b.txt -t # 不询问, 直接输出参数 echo hello world 888 999 hello world 888 999xargs -a b.txt -n 2 # 表示每次处理两个参数 hello world 888 999
uptime
[root@hadoop101 ~]# uptime08:47:35 up 34 days, 21:35, 7 users, load average: 0.31, 0.41, 0.39
命令可以用来查看服务器已经运行了多久,当前登录的用户有多少,以及服务器在过去的1分钟、5分钟、15分钟的系统平均负载值。
查看定时任务
crontab -l
目录相关
dirname : 打印上一级目录
basename : 打印文件名dirname /home/hadoop/test.sh
/home/hadoopbasename /home/hadoop/test.sh
test.sh
快捷键命令
ctrl+r 搜索历史命令
ctrl+k 删除光标后所有字符
ctrl+u 删除光标前所有字符
ctrl+l 光标移动支命令行的最后端
ctrl+a 光标移动到命令行的最前端
ctrl+z 将前台运行的程序挂起到后台
ctrl+d 退出,等价 exit
vi最小化命令
按下!最小化vi并回到外部bash执行 ls -l /opt/ 命令,按enter再回到vi
:! ls -l /opt/
vi行末模式
# 删除
:.,$d 删除所有
:dG 删除所有
:1,$-2d 删除1至倒数第二行的内容# 复制
:1,3cp 复制1至3行的内容p 然后按p粘贴
后台运行命令
1. command & 后台运行,关掉终端会停止运行2. nohup command & 后台运行,关掉终端也会继续运行3. nohup command >/dev/null 2>&1 & 后台运行,将标准错误合并到标准输出,都输出到 /dev/null
vi查找并替换
s 查找并替换
g 一行内全部替换
i 忽略大小写
从第一行到最后一行,查找after并替换成before
:1,$s/after/before/
日期格式化
vi /etc/profile # 编辑
export TIME_STYLE='+%Y/%m/%d %H:%M:%S' # 日期格式source /etc/profile # 使环境变量生效
chkconfig
服务管理
[root@changgou init.d]# chkconfig --list
dubbo-admin 0:off 1:off 2:on 3:on 4:on 5:on 6:off
jexec 0:off 1:on 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
zookeeper 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@changgou init.d]# chkconfig --del zookeeper --删除开机启动服务
根目录文件说明
1. bin sbin:存放可执行程序
2. boot: 引导程序目录
3. dev: 设备文件目录
4. etc:配置文件目录
5. home: 普通用户的家目录
6. lib lib64: Linux 扩展库
7. media mnt: 挂载目录
8. opt: 安装第三方程序
9. var: 存放程序产生的数据文件,比如日志,数据库库文件
查看操作系统版本
# 查看系统的发行版本
[root@node01 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)# 查看内核版本
[root@node01 ~]# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017# 查看系统信息
[root@node01 ~]# cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017# 获取系统信息
[root@node01 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"# 获取操作系统内核信息
[root@node01 ~]# uname -a
Linux node01 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
获取运行的脚本名称
shell_name=$(echo ${0##*/}) # 使用字符串的最大匹配# 定义变量
[root@node01 hive]# path=/opt/stanlong/hive
# 最大匹配, 删除最后一个 / 及其左边所有的内容
[root@node01 hive]# echo ${path##*/}
hive
获取运行脚本的绝对路径
run_dir=$(dirname $(readlink -f $0))#dirname的用处是:输出已经去除了尾部的”/”字符部分的名称;如果名称中不包含”/”,则显示”.”(表示当前目录)。
#例子:
$ readlink -f deploy-small.sh
/home/centos/tmp/706/deploy-small.sh
$ dirname deploy-small.sh
.
$ dirname /home/centos/tmp/706/deploy-small.sh
/home/centos/tmp/706#把两个命令结合起来,就可以获取shell运行的目录
$ dirname $(readlink -f deploy-small.sh)
/home/centos/tmp/706
无交互修改root用户密码
echo 'NewPasswd' | passwd --stdin root
查看端口占用
[root@localhost bin]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 878/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1092/master
tcp6 0 0 :::22 :::* LISTEN 878/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1092/master
查看僵尸进程
ps -A -ostat,ppid,pid,cmd |grep -e '^[Zz]'-A 参数列出所有进程
-o 自定义输出字段 stat(状态)、ppid(进程父id)、pid(进程id)、cmd(命令)
因为状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程