- linux的历史
- unix的发展
- unix和linux关系
- linux的种类
- centos
- ubuntu
- federa
- suse
- kali
- redhat enterprise linux
- 文件系统
- 相对路径和绝对路径
- 命令
- 隐藏文件
- 练习
- 切换用户
- 文件操作命令
- 创建文件
- 复制文件 cp (copy)
- 例子1:
- 例子2 多文件复制
- 源文件包含目录的复制
- 开关
- 综合练习
- 移动文件 (改名称)
- 多源移动
- 什么是文件
- 删除文件(rm remove (unlink ))
- 练习
- 远程复制命令 scp
- 格式:
- sftp命令
- ftp 命令基本不用,如果要用,参考sftp
- 文件查看命令
- cat
- nl
- tac 倒序输出
- rev 镜像输出
- more
- less
- tail
- head
- 练习
- 文本处理
- wc
- sort
- uniq
- grep
- sed
- d: delete
- i: insert
- a: append
- s: 替换
- 第二种匹配方式,是以正则表达式的方式来匹配行
- awk
- tr
- 下载文件
- 正则表达式
- 管道 |
- 重定向 > >>
- 输入重定向
- 从文件中输入重定向 <
- 从屏幕读取作为键盘缓冲区 <<
- 直接把字符串当键盘的缓冲区
- 综合
- 系统相关命令
- top
- free命令
- kill
- pkill
- ps
- ps -ef
- ps aux
- ps afxj
- du
- df
- netstat 查看网络的命令
- ping
- netstat
- telnet
- 综合练习
- shell 脚本编写
- 特殊符号
- if
- for
- until
- while
- 综合
linux的历史
unix的发展
unix和linux关系
linux的种类
centos
- 6.5
- 7.6
- 7.9
- 8.0
- 9.0
ubuntu
16
18
22
federa
suse
kali
redhat enterprise linux
文件系统
相对路径和绝对路径
只要是以/到头的就是绝对路径
命令
ls: 显示文件
-l : 详细信息
-c :按照创建时间
-R : 递归
-r : 倒排序
-S: 以文件大小排序
cd: 切换目录
pwd:显示当前目录
touch命令,创建文件
[yanfeng@localhost ~]$ touch a b c d
[yanfeng@localhost ~]$ ll
total 0
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 a
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 b
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 c
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 d
mkdir: 创建文件夹(创建目录)
mkdir 支持通配符
通配符:
[mn] 表示m或者n
{1..9}表示从从1到9
?: 表示单个字符 类似sql ‘_’
*: 表示所有字符串 类似SQL ‘%’
- [m-n] m到n 的范围的字符
[yanfeng@localhost ~]$ touch m{f..k}
[yanfeng@localhost ~]$ ll
total 0
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 a
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 b
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 c
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 d
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mf
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:33 m[f-k]
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mg
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mh
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mi
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mj
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mk
[yanfeng@localhost ~]$
[yanfeng@localhost ~]$ touch {m..n}{2..5}
[yanfeng@localhost ~]$ ll
total 0
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 1
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 2
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 3
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 4
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 5
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 6
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 7
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 8
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:35 9
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 a
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 b
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 c
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:29 d
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 m2
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 m3
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 m4
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 m5
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mf
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:33 m[f-k]
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mg
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mh
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mi
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mj
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:34 mk
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 n2
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 n3
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 n4
-rw-r--r--. 1 yanfeng data28 0 Nov 8 03:36 n5
-p : with parent,连同父目录一起创建
[yanfeng@localhost ~]$ mkdir a1
[yanfeng@localhost ~]$ ll
total 0
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a1
[yanfeng@localhost ~]$ mkdir a2 a3 a4
[yanfeng@localhost ~]$ ll
total 0
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a1
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a2
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a3
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a4
[yanfeng@localhost ~]$ mkdir a5/a51
mkdir: cannot create directory ‘a5/a51’: No such file or directory
[yanfeng@localhost ~]$ mkdir -p a5/a51
[yanfeng@localhost ~]$ ll
total 0
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a1
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a2
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a3
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:12 a4
drwxr-xr-x. 3 yanfeng data28 17 Nov 8 04:13 a5
[yanfeng@localhost ~]$ ll a5
total 0
drwxr-xr-x. 2 yanfeng data28 6 Nov 8 04:13 a51
[yanfeng@localhost ~]$ mkdir -p a5/a51
[yanfeng@localhost ~]$ mkdir a5/a51
mkdir: cannot create directory ‘a5/a51’: File exists
隐藏文件
以点打头的文件是默认的隐藏文件
一般,点文件是应用程序的配置文件。
所以的通配符都不能匹配开头文件的.开头。
rm -f *
练习
- 在家目录下创建文件夹 m1,m2,m5
- 在每个文件夹下创建a1-a9的文件
- 创建 m10/m110的目录,并在m10的目录下创建文件abcd四个文件
- 在~目录下,递归显示所有的文件详细信息。
切换用户
su 命令
su - yanfeng
- root下切换到其他人,不需要密码
- 普通用户切换其他人,需要输入密码
文件操作命令
创建文件
touch filename filename1 filename …..
如果文件已经存在,他会修改此文件访问时间
文件包含所有时间
- 创建时间
- 修改时间
- 访问时间
例子:
touch today
复制文件 cp (copy)
例子1:
复制a文件变成b文件,b文件默认就被覆盖并且无提示cp a b
复制a文件变成b文件,要求提示,如果文件b存在的情况。cp -i a b
会提示是否需要覆盖,
shell 命令’
命令 开关 参数
ls -l /etc /var /var/logs
例子2 多文件复制
多文件复制最后的参数一定是目录,而且必须存在。
cp file1 file2 dir1
源文件包含目录的复制
- 必须包含 -r 开关 建议大家复制的时候,都加上 -r
[yanfeng@localhost ~]$ cp a* b c
[yanfeng@localhost ~]$ ll c
total 0
-rw-r--r--. 1 yanfeng data28 0 Nov 9 21:06 a
-rw-r--r--. 1 yanfeng data28 0 Nov 9 21:06 a1
-rw-r--r--. 1 yanfeng data28 0 Nov 9 21:06 b
[yanfeng@localhost ~]$ cp c dir
cp: omitting directory ‘c’
[yanfeng@localhost ~]$ cp -r c dir
[yanfeng@localhost ~]$ ll dir
total 0
drwxr-xr-x. 2 yanfeng data28 34 Nov 9 21:08 c
[yanfeng@localhost ~]$ ll -R dir
dir:
total 0
drwxr-xr-x. 2 yanfeng data28 34 Nov 9 21:08 c
dir/c:
total 0
-rw-r--r--. 1 yanfeng data28 0 Nov 9 21:08 a
-rw-r--r--. 1 yanfeng data28 0 Nov 9 21:08 a1
-rw-r--r--. 1 yanfeng data28 0 Nov 9 21:08 b
[yanfeng@localhost ~]$ ll -Rd dir
drwxr-xr-x. 3 yanfeng data28 15 Nov 9 21:08 dir
开关
-r : 递归
-i : 提示
-f: 强制,
-n: 不覆盖目标文件,非常有用
-b: 覆盖之前备份原文件,对目录不生效。
-v: 显示操作的内容
yanfeng@localhost dir]$ cp -vbr dir mkdir^C
[yanfeng@localhost dir]$ cd ..
[yanfeng@localhost ~]$ cp -vbr dir mkdir
‘dir/c/a’ -> ‘mkdir/dir/c/a’ (backup: ‘mkdir/dir/c/a~’)
‘dir/c/b’ -> ‘mkdir/dir/c/b’ (backup: ‘mkdir/dir/c/b~’)
‘dir/c/a1’ -> ‘mkdir/dir/c/a1’ (backup: ‘mkdir/dir/c/a1~’)
`
综合练习
复制/etc/a* 文件到当前目录
cp /etc/a* .
cp /etc/a* ~多源复制文件和文件夹
cp -r /etc/a* ~/backup /tmp ~
cp -n /etc/[mn][q-s]?[fk] .
移动文件 (改名称)
命令: mv
mv a b
mv dir1 dir2
- 如果dir2不存在,就改名
- 如果dir2存在,就把dir1移动到dir2,结果是dir2/dir1
多源移动
mv a* a2* *a2 backup
什么是文件
文件有非连续的区块所组成,并且每个区块都有节点号,inode
删除文件(rm remove (unlink ))
-i: 有提示,如果是可读文件,不加i也提示
-f: 强制删除,不提示
-r: 删除目录需要,递归删除
rm -r dir1 dir1 file1 file2
rm -fr dir1 dir2 dir3
rm f1 f2 f3 f4
rm a b
rm -r /var/log/[0-9]*
rm -r ~/backup/*log
rm -fr /tmp/* a /var/log/*
练习
- 复制/var/log的文件到自己家目录的下的log文件夹
- 删除 家目录下的log下的以d打头的文件
- 复制etc下所有的文件到当前log目录下
- 删除当前家目录下的所有文件和目录,不能删除.文件
远程复制命令 scp
scp,ssh,sftp是openssh家族的三个软件
scp: 远程复制文件
ssh: 远程执行命令
sftp:远程操作文件的命令
scp:
linux/unix/mac 相互可以无缝对拷
windows/linux:
scp命令只能执行在windows端。
格式:
1) scp user@host:/path/to/file dest
2) scp source user@host:/path/to
3) scp -r user1@host1:/path1/ user2@host2:/path2 ,不常用
例子:
scp d:\z.zip root@192.168.10.4:/root
sftp命令
sftp是安全文件传输协议
Secure File Transform Protocal
ftp是非安全, 23
sftp走的是22端口,ssh,scp走22端口,22端口访问叫sshd服务。
sftp有各种不同的版本
l打头的表示操作本机的路径
lcd
lpwd
lmkdir
lls
如没l
cd
pwd
mkdir
ls
指的是在服务器端工作。
put 上传
get 下载
ftp 命令基本不用,如果要用,参考sftp
文件查看命令
cat
- 直接显示文件,不停留
- -n 表示打印出行号,连续编号,空行也算
例子:
cat /etc/conf
cat dir1/.txt abcd.txt
nl
类似cat -n
但是跳过空行
tac 倒序输出
rev 镜像输出
more
翻页
回车: 向下显示一行
b: 向上翻页
f: 往下翻页
q:退出
h:help
例子:
more /etc/*.txt
more 1.txt 2.txt
more dir1/1.txt
less
类似 more
但是支持 上下移动,用上下键
tail
默认看文件尾部10行
tail -10 /etc/services /mb/cs/*.txt
tail -n xx = tail -xx
tail -n +xx 表示从xx行显示的尾部
tail -f xxx.log
这个表示一直监视xxx.log尾部10行。ctrl+c退出当前tail命令
head
默认看文件头部10行
练习
- 复制/etc/services文件当前目录下
1) 查看它有多少行
2)倒序输出此文件
3)查看尾部8行。
文本处理
wc
wc 统计文本行,单词,字符
wc a.txt b.txt /etc/*conf
l: 行数
w:单词书
c:字符数
sort
排序:
-u : unique,排序的同时去除相同的key
-k: 按照第几列排序,需要指定分隔符 -t,不指定是空格。
-n:数字
-r: desc
uniq
grep
查找
-c:
-v:
-l:
-h:
-q:
-i:
-E: {} +
grep -E = egrep
grep -P = pgrep
sed
是流编辑器(streaming editor) ,vi,emacs,nano,这些块编辑器。
主要功能有
替换,删除,打印文字屏幕,插入
p: print
d: delete
sed '0,$d' 9.csv
sed '/.*/d' 9.csv
i: insert
在匹配到的行前面增加一行
sed ‘模式i new line ‘ 9.csv
a: append
在匹配到的行后面增加一行
sed ‘模式a new line ‘ 9.csv
sed ‘/^2002/a new line ‘ 9.csv
s: 替换
[yanfeng@server10 ~]$ sed -e 's/d/D/g' -e '/^$/d' -e '/^#/d' /etc/selinux/config
SELINUX=enforcing
SELINUXTYPE=targeteD
比如打印出9.csv到第21到30行。
nl 9.csv | head -n 30 | tail
``
模式匹配有2中,一种以行号做匹配.如下列,打印出21,30行
[root@server10 ~]# nl 9.csv | sed -n '21,30p'
21 2020-11-05,'000009,中国宝安,8.22,8.33,7.87,8.05,7.9,0.32,4.0506,4.5808,117005318,953686456.73,21201138792.3,20996186277.2
22 2020-11-04,'000009,中国宝安,7.9,7.95,7.71,7.77,7.77,0.13,1.6731,2.2418,57261096,449910028.83,20375790323.5,20178816495.1
23 2020-11-03,'000009,中国宝安,7.77,7.88,7.71,7.83,7.74,0.03,0.3876,1.7281,44140256,343537490.22,20040492508.0,19846760021.1
24 2020-11-02,'000009,中国宝安,7.74,7.79,7.5,7.56,7.56,0.18,2.381,1.6859,43061995,329832056.63,19963116089.1,19770131604.1
25 2020-10-30,'000009,中国宝安,7.56,7.81,7.54,7.78,7.73,-0.17,-2.1992,1.7883,45678272,349811678.7,19498857575.4,19310361101.6
26 2020-10-29,'000009,中国宝安,7.73,7.91,7.71,7.75,7.86,-0.13,-1.6539,2.129,54380258,424440113.01,19937323949.5,19744588798.4
27 2020-10-28,'000009,中国宝安,7.86,7.94,7.5,7.59,7.59,0.27,3.5573,2.3554,60162894,468217035.36,20272621764.9,20076645272.3
28 2020-10-27,'000009,中国宝安,7.59,7.64,7.46,7.6,7.67,-0.08,-1.043,1.3095,33449390,252984852.75,19576233994.3,19386989518.7
29 2020-10-26,'000009,中国宝安,7.67,7.75,7.52,7.74,7.7,-0.03,-0.3896,1.203,30727285,234862006.65,19782571111.5,19591331964.2
30 2020-10-23,'000009,中国宝安,7.7,7.9,7.7,7.74,7.66,0.04,0.5222,1.9446,49670369,387850177.07,19859947530.5,19667960381.3
sed -n '$p' 9.csv
第二种匹配方式,是以正则表达式的方式来匹配行
` sed -n ‘/^2002/p’ 9.csv
awk
tr
下载文件
curl
wget
正则表达式
模式匹配
. 匹配任意字符
^: 开头
$: 结尾
{n}:表示前面一个字符重复n次
{m,n} 表示前面一个字符重复m到n次。
+:表示前面一个字符重复1次或者无数次
*:表示前面一个字符重复0次或者无数次
?:表示前面一个字符重复0次或者1次
[mn]表示m或者n
[0-9]: 0-9之间的任意字符
[^m]:不是m字符
[^0-9] 不是0-9
[0-9a-zA-z]: 0-9,a-z,A-Z
练习:
appples
ap{3}les
.*
[a-z]+
[a-z]*
[^0-9]*
管道 |
1) 第一个命令的输出作为第二个命令的输入。
2)第一个命令输出,必须是1的流的才行,2的流管道是不接受的。
3)如果要接受2个流,必须合并输出流到1
重定向 > >>
重定向将标准输出 1 ,标准错误输出2 输出文件当中,而不是屏幕。
1 是可以省略的。
** 重定向 首先清空文件,然后再执行 **
** 追加的重定向>>不受影响 ,有可能造成死循环 **
> 清空目标文件,输出到此文件,
>> 不清空,追加
例子:
find /etc/* 1>filelist
把文件名称输出到filelist,错误信息仍然在屏幕
find . -type f 2>/dev/null
将正确文件信息输出到屏幕,错误输出到null设备。null设备永远都是零字节
find /etc/* 1>>filelist
追加
grep centos /etc/a.conf >/etc/a.conf
这是错误的,a.conf执行之前就被情况,因此结果都是0字节。
find /etc/* >/dev/null 2>&1
什么结果都不要了。
tomcat.exe >log 2>&1 &
这个表示将tomcat log日志按照正常的输出到log文件里面去。
输入重定向
从文件中输入重定向 <
<: 从文件中读取,把此文件作为键盘缓冲区
ssh-keygen < answers
这个命令至少4个回车,例如下面文件名称answers
`
ssh-keygen < answers
从屏幕读取作为键盘缓冲区 <<
cat EOF >file.txt
>this is the first line
>secodline
> 3rd line
>EOF
会产生file.txt.它的内容如下:
this is the first line
secodline
3rd line
直接把字符串当键盘的缓冲区
cat <<<”as keyboard buffer “
as keyboard buffer
综合
cat </etc/services >myservices
=> cp /etc/services myservices
mysql -uroot -p’1qaz!QAZ’ database < batch.sql
cat batch.sql
use aicourse;
select * from aicourse;
drop table aicourse;
create database aicourse_1 charset utf8;
##作业
在10.4服务器上,创建10个用户,并且创建10个和他同名的数据库,并且授权所有权限
create user user1@’%’ identified by ‘123456’;
create database user1 charset utf8;
grant all privileges on user1.* to user1@’%’
flush privileges;
删除10个用户和此数据库
drop user user1@’%’;
drop database user1;
系统相关命令
top
右上角的平均负载1分钟,5分钟,10分钟。
意思争夺CPU进程个数,一般不能长时间超过 cpu内核 * 0.7
top左上角看到系统的启动的时长
top - 20:49:16 up 4 days, 19:19, 11 users, load average: 0.05, 0.03, 0.05
Tasks: 152 total, 1 running, 151 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1707580 total, 285832 free, 352432 used, 1069316 buff/cache
KiB Swap: 3129340 total, 3129084 free, 256 used. 1081092 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1022 root 20 0 574284 17544 6120 S 0.3 1.0 0:31.34 tuned
1 root 20 0 128304 6888 4196 S 0.0 0.4 0:21.28 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.09 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.72 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.64 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_b
free命令
看内存大小,和使用量。
[root@server10 ~]# free
total used free shared buff/cache available
Mem: 1707580 353972 281504 25648 1072104 1079412
Swap: 3129340 256 3129084
kill
kill是正常杀死,只能杀自己进程。除了root
kill -9 是直接杀死,不再通知。只能杀自己进程
kill -9 PID
kill -9 10101
pkill
pkill会模糊匹配,要小心
pkill PNAME 进程名称
pkill -9 bash
pkill -9 mysql
ps
ps命令是显示进程的。及其复杂。
ps -ef
查找所有进程的详尽信息
ps aux
查内存
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 128304 6888 ? Ss Nov07 0:21 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Nov07 0:00 [kthreadd]
maruiqi+ 20420 0.0 0.1 158904 2328 ? S 20:06 0:00 sshd: maruiqing@pts/8
maruiqi+ 20421 0.0 0.1 115540 2056 pts/8 Ss+ 20:06 0:00 -bash
mysql 21352 0.0 0.0 113412 1604 ? Ss 01:10 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
root 21407 0.0 0.3 158904 5680 ? Ss 20:25 0:00 sshd: zhanghao [priv]
zhanghao 21415 0.0 0.1 158904 2328 ? S 20:25 0:00 sshd: zhanghao@pts/10
zhanghao 21416 0.0 0.1 115544 2088 pts/10 Ss+ 20:25 0:00 -bash
ps afxj
查进程树
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1021 19958 19958 19958 ? -1 Ss 0 0:00 \_ sshd: hcf [priv]
19958 19985 19958 19958 ? -1 S 1012 0:00 | \_ sshd: hcf@notty
19985 19986 19986 19986 ? -1 Ss 1012 0:00 | \_ /usr/libexec/openssh/sftp-server
1021 20413 20413 20413 ? -1 Ss 0 0:00 \_ sshd: maruiqing [priv]
20413 20420 20413 20413 ? -1 S 1009 0:00 | \_ sshd: maruiqing@pts/8
20420 20421 20421 20421 pts/8 20421 Ss+ 1009 0:00 | \_ -bash
1021 21407 21407 21407 ? -1 Ss 0 0:00 \_ sshd: zhanghao [priv]
21407 21415 21407 21407 ? -1 S 1008 0:00 | \_ sshd: zhanghao@pts/10
21415 21416 21416 21416 pts/10 21416 Ss+ 1008 0:00 | \_ -bash
1021 22175 22175 22175 ? -1 Ss 0 0:00 \_ sshd: gaokaidi [priv]
22175 22182 22175 22175 ? -1 S 1003 0:00 | \_ sshd: gaokaidi@pts/9
22182 22183 22183 22183 pts/9 22183 Ss+ 1003 0:00 | \_ -bash
1021 22661 22661 22661 ? -1 Ss 0 0:00 \_ sshd: yanfeng [priv]
22661 22667 22661 22661 ? -1 S 1000 0:00 \_ sshd: yanfeng@pts/5
22667 22668 22668 22668 pts/5 23772 Ss 1000 0:00 \_ -bash
22668 23772 23772 22668 pts/5 23772 R+ 1000 0:00 \_ ps afxj
1 1022 1022 1022 ? -1 Ssl 0 0:31 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
1 1023 1023 1023 ? -1 Ssl 0 0:20 /usr/sbin/rsyslogd -n
1 1354 1354 1354 ? -1 Ss 0 0:02 /usr/libexec/postfix/master -w
1354 1360 1354 1354 ? -1 S 89 0:00 \_ qmgr -l -t unix -u
1354 23771 1354 1354 ? -1 S 0 0:00 \_ pickup -l -t unix -u
1 21352 21352 21352 ? -1 Ss 27 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
21352 21517 21352 21352 ? -1 Sl 27 0:49 \_ /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql
du
du -sh . 或者 du -sh
查看各目录的文件大小情况汇总
[root@server10 home]# du -sh *
1.5M gaokaidi
16K hcf
16K lipenglei
2.0M lishinan
2.3M liuhu
20K lixingzhu
85M maruiqing
64K shaojianghe
124K testing
3.6M user01
16K user02
12K user03
16K user04
16K user05
16K wyc
16K xc
20M yanfeng
1.7M zhanghao
5.0M zhouding
df
[root@server10 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 822M 0 822M 0% /dev
tmpfs tmpfs 834M 0 834M 0% /dev/shm
tmpfs tmpfs 834M 26M 809M 4% /run
tmpfs tmpfs 834M 0 834M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 26G 2.3G 24G 9% /
/dev/sda1 xfs 1014M 152M 863M 15% /boot
//192.168.10.2/data cifs 1.9T 823G 1.1T 45% /mnt/server10.2
tmpfs tmpfs 167M 0 167M 0% /run/user/1009
tmpfs tmpfs 167M 0 167M 0% /run/user/1001
tmpfs tmpfs 167M 0 167M 0% /run/user/1002
tmpfs tmpfs 167M 0 167M 0% /run/user/1012
tmpfs tmpfs 167M 0 167M 0% /run/user/1008
tmpfs tmpfs 167M 0 167M 0% /run/user/1003
tmpfs tmpfs 167M 0 167M 0% /run/user/1000
netstat 查看网络的命令
ping
检测对方机器是否联通,还可以检查DNS解析是否正常。
PS C:\Users\Andy> ping 192.168.10.4
正在 Ping 192.168.10.4 具有 32 字节的数据:
来自 192.168.10.4 的回复: 字节=32 时间=1ms TTL=63
来自 192.168.10.4 的回复: 字节=32 时间=2ms TTL=63
来自 192.168.10.4 的回复: 字节=32 时间=2ms TTL=63
来自 192.168.10.4 的回复: 字节=32 时间=2ms TTL=63
PS C:\Users\Andy> ping www.baidu.com
正在 Ping www.wshifen.com [104.193.88.123] 具有 32 字节的数据:
来自 104.193.88.123 的回复: 字节=32 时间=207ms TTL=52
来自 104.193.88.123 的回复: 字节=32 时间=206ms TTL=52
来自 104.193.88.123 的回复: 字节=32 时间=206ms TTL=52
来自 104.193.88.123 的回复: 字节=32 时间=207ms TTL=52
netstat
判断一个程序有没有启动,比如oracle
ps -ef |grep oracle
netstat -antp |grep 1521
netstat -antp 结果示例。
[root@server10 ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 21517/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1021/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1354/master
tcp 0 0 192.168.10.4:22 192.168.20.200:64538 ESTABLISHED 19497/sshd: shaojia
tcp 0 0 192.168.10.4:22 192.168.20.213:13503 ESTABLISHED 19891/sshd: hcf [pr
tcp 0 0 192.168.10.4:48004 192.168.10.2:445 ESTABLISHED -
tcp 0 0 192.168.10.4:22 192.168.20.69:49863 ESTABLISHED 19452/sshd: lishina
tcp 0 0 192.168.10.4:22 192.168.20.208:1909 ESTABLISHED 19951/sshd: hcf [pr
tcp 0 232 192.168.10.4:22 192.168.20.188:13491 ESTABLISHED 22661/sshd: yanfeng
tcp 0 0 192.168.10.4:22 192.168.20.155:61245 ESTABLISHED 22175/sshd: gaokaid
tcp 0 0 192.168.10.4:22 192.168.20.213:13505 ESTABLISHED 19898/sshd: hcf [pr
tcp 0 0 192.168.10.4:22 192.168.20.211:50026 ESTABLISHED 19708/sshd: lishina
tcp 0 0 192.168.10.4:22 192.168.20.216:50545 ESTABLISHED 21407/sshd: zhangha
tcp 0 0 192.168.10.4:22 192.168.20.69:62206 ESTABLISHED 18881/sshd: maruiqi
tcp 0 0 192.168.10.4:22 192.168.20.214:63338 ESTABLISHED 20413/sshd: maruiqi
tcp 0 0 192.168.10.4:22 192.168.20.187:64848 ESTABLISHED 19587/sshd: shaojia
tcp 0 0 192.168.10.4:22 192.168.20.208:1911 ESTABLISHED 19958/sshd: hcf [pr
tcp6 0 0 :::22 :::* LISTEN 1021/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1354/master
telnet
telnet 192.168.10.4 3306
类似 connnted
[root@server10 ~]# telnet 192.168.10.3 33062
Trying 192.168.10.3...
Connected to 192.168.10.3.
Escape character is '^]'.
J
5.7.36FY*Z5:x2[liOf lAImysql_native_password
!#08S01Got packets out of orderConnection closed by foreign host.
综合练习
[yanfeng@server10 ~]$ sqlplus -S system/oracle@192.168.10.3:15210/xe <<< " select 'drop table LISHINAN.' || table_name || ' ;' from all_table
s where upper(owner)='LISHINAN';" |grep drop | sqlplus -S system/oracle@192.168.10.3:15210/xe
shell 脚本编写
特殊符号
$#: shell脚本后面参数的个数
$1,$2,..$n :表示第一个参数到第n个参数
$*: 表示所有参数
$@: 表示所有参数,但是它是数字
$$: 当前的程序进程号
$?: 上一个命令退出返回值,如果是0,表示上一个命令是正确的,否则是错误。
if
if [condition] ; then
statements
fi
if [ condtions] ; then
statements
elif [condition] ; then
else
fi
例子:
if grep -q centos /etc/* -r 2>/dev/null ; then
fi
* [] = test
if [ $A -eq 5 ] ; then
fi
==>
if test $A -eq 5 ; then
fi
for
for file in * /etc/* /var/log/*
do
echo $file
done
for num in 1 2 3 4 5 6
do
echo $(( $num ** $num ))
done
for num in $(seq 1 10)
do
done
for user in $( cat userlist.txt )
do
if [ $user = 'xiaosan'] ; then
continue
fi
if [ $user = 'SYSTEM' ] ; then
break
fi
./drop_oracle_user $user
done
until
while
cat /etc/services | while read line
do
echo $line
done
while [ $a -gt 5]
do
done
while [ $( wc -l /etc/services ) -lt 20000 ]
do
done
综合
[yanfeng@server10 ~]$ cat create_oracle_user
#!/bin/bash
echo "$1,$2,$3"
echo "参数个数 $# "
# -gt ,-lt, -le, -ge,-eq ,-ne
if [ $# -gt 0 ] ; then
for user in $@
do
echo "creating $user user ..."
echo " create user $user identified by 123456 ;" | sqlplus -S system/oracle@192.168.10.3:15210/xe
echo "creating $user user ... done ! "
done
fi
最后编辑:严锋 更新时间:2025-05-09 15:48