shell2

网络

ping
检查网络的共通性,ping使用忽略网控制消息协议(Internet Control Message Protocol,ICMP)中的echo分组。当向某主机发送echo分组时,如果分组能够送达且该主机处于活动状态,那么它就会返回一条响应。
-c 指定所发送echo分组数量,写在后面 ping www.baidu.com -c 2
ping命令如果顺利执行,会返回退出状态0,否则返回非0.通过$?获得返回值。
Traceroute
当应用程序通过互联网请求服务时,服务的可能位于远端,两者之间通过多个网关或设备节点相连。分组要穿过这些无关才能到达目的地。可以使用traceroute显示分组途径的所有网关的地址。可以帮助我们搞明白分组到达目的地需要经过多少跳(hop)。中途的网关或路由器的数量给出一个策略网络上两个节点之间距离的度量(metric)。
ssh
访问远程计算机上的shell,进而执行命令。
通过网络传输文件
lftp 通过ftp传输文件。输入quit退出会话
sftp 通过ssh连接传输文件。安全ftp。输入quit退出会话
scp 使用ssh进行传输

用SSH实现无密码自动登录
SSH采用非对称加密技术,认证密钥包含两部分:一个公钥和一个私钥。
netstat
用于网络服务分析的命令。查看开发端口与服务
netstat -tnp 列出开发端口与服务

创建套接字
使用netcat命令(或nc)
nc -l 1234
nc hostname port
nc -zv ip port 查看机器端口是否打开
nc -l -p 80 打开本机80端口

iwconfig 获得无线接口的名称

磁盘管理

df和du

du

du  查看某个或多个文件占用磁盘大小,统计结构默认以字节做计量单位。
-a		递归输出指定目录或多个目录所有文件的统计结构
-h		以kb为单位显示
-c		输出文件或目录的磁盘使用情况,会在输出结果末尾加上一行总计
-s		只输出合计数据。可配合-h打印易读的格式
-b		以字节为单位
-k		以kb为单位
-m		以mb为单位
-B		以块为单位
--exclude		排除部分文件
du aa.txt		查看文件大小
du	jpg		查看文件夹大小
du -a jpg		查看文件夹内文件大小
du -B 4 jpg
du -B 1024 jpg
du -exclude "*.txt" aa.txt		排除txt文件进行统计
du -ak dir | sort -nrk 1 | head		找出指定目录中最大的10个文件

df 提供磁盘使用情况

	df -h

计算命令执行时间

要测试执行时间,只需要将time放在想要运行的命令之前
如:time command
-o		将相关时间统计写入文件
-a		将命令执行时间添加到文件而不影响其原有内容,结合-o使用
-f		格式化字时间输出。
time ls
time -o output.txt ls		将命令执行时间写入文件

在这里插入图片描述

登录用户、启动日志及启动故障

who 获取当前登录用户的相关信息
users 获取当前登录主机用户列表
uptime 查看系统已经加电运行了多长时间
last 获取上一次启动以及用户登录会话信息
last username 获取单个用户登录会话信息
last reboot 获取重启会话信息
lastb 获取失败的用户登录会话信息

列出1小时内占用CPU最多的10个进程

ps:用于收集系统中进程的详细信息。这些信息包括CPU使用情况、正在执行的命令、内存占用、进程状态等。

使用watch监视命令输出

watch可以再终端中以固定的间隔监视命令输出 watch command
命令默认每两秒更新一次。可用-n SECOND指定更新输出的时间间隔。watch -l 5 ls。
-d 将时间间隔前后的命令输出的差异之处以不同颜色突出标示出来。
watch -d COMMAND

记录文件及目录访问

inotifywait	可以用来收集有关文件访问的信息。需安装。

用logrotate管理日志文件

用syslog记录日志

在这里插入图片描述
logger LOG_MESSAGE 向系统日志文件/var/log/message中写入日志信息。
logger -t TAG LOG_MESSAGE 记录特定的标记到/var/log/message
logger -f /var/log/source.log 将另一个日志文件的最后一行记录到系统日志

收集进程信息

ps

ps	收集进程信息的重要工具。它提供的信息包括:拥有进程的用户、进程的起始时间、进程对应的命令行路径、PID、进程所属的终端(TTY)、进程使用的内存、进程占用的CPU等。
-f		显示多列
-e		获取运行在系统中的每个进程的信息。
-ax	同上
-o		指定要显示的列。参数以,分隔。参数如下 linux shell脚本攻略p285:
	pcpu CPU占用率
	pid 进程ID
	ppid 父进程ID
	pmem 内存使用率
	comm 可执行文件名cmd 简单命令①
	user 启动进程的用户
	nice 优先级
	time 累计的CPU时间
	etime 进程启动后流逝的时间
	tty 所关联的TTY设备
	euid 有效用户ID
	stat 进程状态
-C		指定查找命令
-t		指定TTY列表
-L		显示线程相关信息。NLWP是进程的线程数。LWP是输出中每个条目的线程ID。
w		宽松输出
ps -eo comm,pcpu	
ps -o pid		只输出pid	

top

默认输出一个占用CPU最多的进程列表。输出结果没隔几秒就会更新。

pgrep

获得特定命令的进程ID列表。
-d		指定分隔符
-u		指定进程拥有者
-U		指定用户列表

查看命令位置

which		找出命令位置
whereis		返回命令路径,打印其对应的命令手册的位置及命令源代码路径。
file		用来确定文件类型
whatis		输出作为命令参数的命令简短描述信息。

杀死进程以及发送响应信号

kill

kill		终止进程的信号,以进程ID作为参数
	-l		打印信号编号以及对应信号名称
kill -s SIGNAL PID	通过kill命令向进程发送指定的信号。SIGNAL是kill的信号。

在这里插入图片描述

kill -s SIGKILL PID		强行杀死进程
kill -9 PID		同上
killall  通过进程名终止进程
	-i		杀死进程前进行确认
killall process_name
killall -s SIGNAL process_name		通过名称向进程发送信号
killall -9 process_name		通过名称强行杀死进程
pkill  与kill类似,默认情况下pkill接受的是进程名,而非进程ID
pkill process_name
	pkill -s SIGNAL process_name		SIGNAL是信号编号。pkill不支持信号名称。

trap

trap		处理所接收的信号。一旦使用trap将某个函数分配给一个信号,那么该脚本运行收到该信号时,其对应的函数就会开始执行。
语法;trap 'signal_handler_function_name' SIGNAL LIST
SIGNAL LIST以空格分隔,它可以是信号变化或者信号名称。

向用户终端发送消息

wall 用来向当前登录用户的终端写入消息。可以将消息传递给一台服务器中所有的登录用户或是多台分散主中的用户。
wall message
cat aa.txt | wall		发送文件内容给所有当前登录终端
wall< aa.txt  	同上
mesg t		禁止写入消息
mesg y		允许写入消息

采集系统信息

hostname		打印当前系统的主机名,或者 uname -n
uname -a 		打印linux内核版本、硬件架构等详细信息
uname -r		打印内核发行版本
uname -m		打印主机类型
cat /proc/cpuinfo		打印CPU相关信息

使用proc采集信息

/proc是一个在内存中的伪文件系统(pseudo filesystem)。它的引入是为了提供一个可以从用户空间读取系统参数的接口。

使用cron进行调度

* * * * * aa.sh
分 时 天 月 周(0-6,0表示星期天) 命令/脚本
通过crontab命令进行调度
crontab -e  打开一个vim界面,输入corn作业
crontab -l		列出cron现有内容
-u		查看其他用户的cron表
-r		删除当前用户的cron表
* * * * * /usr/shell/aa.cron		每分钟允许aa.cron
crontab aa.cron		创建一个文件,并写入cron作业。将文件名作为参数,运行crontab
crontab<<EOF * * * * * aa.cron EOF		在行内指定cron作业

用户管理

useradd		创建新用户
deluser		删除用户
chsh		修改用户默认shell

脚本内执行脚本

fork
fork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会新开一个子 Shell 执行脚本 foo.sh,子 Shell 执行的时候, 父 Shell 还在。子 Shell 执行完毕后返回父 Shell。 子 Shell 从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回父 Shell。

exec
exec 与 fork 不同,不需要新开一个子 Shell 来执行被调用的脚本. 被调用的脚本与父脚本在同一个 Shell 内执行。但是使用 exec 调用一个新脚本以后, 父脚本中 exec 行之后的内容就不会再执行了。这是 exec 和 source 的区别.
source
与 fork 的区别是不新开一个子 Shell 来执行被调用的脚本,而是在同一个 Shell 中执行. 所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用。
参考:https://www.jb51.net/article/159101.htm

echo命令后面执行脚本需加``号(反引号 tab键上面的键)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值