Windows
-
列出文件并排除某些文件
ls .go -exclude_test.go -
使用for in中的变量。
注意第一句:设置本地为延迟扩展。即延迟变量,全称延迟环境变量扩展
及变量引用将%改为!
此脚本实现列出所有扩展名为go的文件,并排除_test.go,即不是测试文件。
示例1的效果相同
想批量用vs code打开非test的go文件,虽然echo没错,但打开文件依然不成功。待续…
@setlocal enabledelayedexpansion
@echo off
for %%i in (*.go) do (
set abc=%%i
if not "!abc:~-8!"=="_test.go" (
echo !abc!
)
)
- 批量将mp4中的音频提出为mp3
for %a in (*.mp4) do ffmpeg -i %a %a.mp3
修改音频效果,增加多线处理,据说可以加速
or %a in (*.mp4) do ffmpeg -i %a -b:a 64k -threads 2 %a.mp3
- netsh端口转发 将来自333端口的流量全部转发到192.168.191.130的3389端口 netsh interface portproxy add v4tov4 listenport=333 connectaddress=192.168.191.130 connectport=3389
netsh interface portproxy show all 查看所有转发规则
netsh interface portproxy delete v4tov4 listenport=333 删除转发规则
netsh interface portproxy reset 清除所有规则
- caff音频批量转换为ogg
for %%a in ("*.caf") do ffmpeg -i "%%a" "%%~na.ogg
pause
- 监控以上脚本中ffmpeg是否结束,结束则关机
$processName = "ffmpeg.exe"
while(1){
$process = Get-WmiObject -Query "SELECT * FROM Win32_Process WHERE Name='$processName'"
[Int]$threadCount = $process.ThreadCount
if($threadCount -eq 0)
{
Write-Host "Over"
shutdown /s /t 100
}
else
{
Write-Host "The number of threads in $processName is $threadCount"
}
Start-Sleep -s 60
}
- ffplay播放摄像头内容
ffplay -f dshow -i video=“C1-1 USB3 Video” -x 800 -y 600
- 资源管理器右键直接显示所有
reg.exe add “HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32” /f /ve
然后 taskkill /f /im explorer.exe & start explorer.exe 杀掉资源管理器并重新运行它。
Linux
下载ts视频并合并
因为各种原因(我就遇到过有站长将ts文件扩展名改为了jpg),之前的ffmpeg不能直接下载合并,但能获取到m3u8列表文件。
#!/bin/bash
i=0
for line in `cat 1.m3u8` #视频列表文件
do
#echo $line
if [ "${line:0:5}" = "https" ] #读取ts视频片段地址
then
let i++
cmd="curl ${line:0:${#line}-1}" #读取时总是有换行符,删除
echo $cmd ">>>>" $i
`$cmd --output $i.ts -s` #下载视频片段为顺序文件
fi
done
#获取所有文件并合并为单个
find . -type f | grep [0-9]\\.ts | cut -c 3- | sort -n | xargs cat >> abc.ts
#转换为mp4
ffmpeg -i abc.ts -acodec copy -vcodec copy -f mp4 test.mp4
ffmpeg 合并文件
ffmpeg文件合并 文件1.ts~ 100.ts 流媒体文件
1.txt编辑
file 1.ts
file 2.ts
...
file 100.ts
命令 (-vcodec copy -acodec copy 等于 -c copy)
.\ffmpeg.exe -f concat -i .\1.txt -c copy .\output.mkv
或者
.\ffmpeg.exe -f concat -i .\1.txt -c copy .\output.mp4
脚本守护进程
后台程序莫名其妙崩溃,最好的情况是先检查问题,再恢复上线。但是也经常需要先完成任务,然后在用户最少的时间段去排除问题。
这个脚本就是不断轮循,判断后台是否有指定进程名存在。若不存在则直接运行,并发一个企业微信信息给网管。
#!/bin/bash
while true
do
if test $( pgrep -f wyfy | wc -l ) -eq 0
then
echo "进程不存在"
./qywx "wyfy进程重启"
nohup ./wyfy &
else
echo "存在进程"
fi
sleep 1m
done
Ubuntu 关闭时间同步
sudo timedatectl set-ntp false
挂载网络磁盘
sudo mount -o username=pi,password=pi,vers=1.0,iocharset=utf8 //192.168.100.4/disk /home/ease/rdisk
sudo mount -o username=pi,password=pi //192.168.8.10/usb1 /home/pi/webDisk
linux定时任务crontab设置
/1 ** * service mysqld restart //每隔1分钟执行一次
/10 ** * service mysqld restart //每隔10分钟执行一次
0 /1 ** service mysqld restart //每1小时执行一次
0 /2 ** service mysqld restart //每2小时执行一次
0 10 ** * service mysqld restart //每天10点执行
30 19 ** * service mysqld restart //每天19点30分执行
0 10 ** 1 service mysqld restart //每周一10点执行
30 17 ** 5 service mysqld restart //每周五17点30分执行
0 10 1 10 * service mysqld restart //每年的10月1日10点执行
0 20 8 8 * service mysqld restart //每年的8月8日20点执行
Shell if
INT1 -eq INT2 =
INT1 -ne INT2 <>
INT1 -gt INT2 >
INT1 -ge INT2 >=
INT1 -lt INT2 <
INT1 -le INT2 <=
显示占用空间并排序
du -s * | sort -nr | head
查看系统glibc支持的版本
strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_
ssh免密
本地客户端生成公私钥:(一路回车默认即可) ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.235.22
磁盘空间占用情况
du -s * | sort -nr | head 空间占用并排序输出
screen创建后自动执行命令
screen -dmS test bash -c ‘go run /1.go’
远程运行指令
ssh -p 2222 abc@defg.3322.org “df -lh”
flac转换为mp3
find . -name “*.flac” -exec ffmpeg -i {} -ab 320k -map_metadata 0 -id3v2_version 3 {}.mp3 ;
让电脑不休眠
这里有个工具,xdotool,用于控制鼠标或键盘。其实就是让鼠标动来动去。
#!/bin/bash
while [ 1=1 ]
do
xdotool mousemove 1 1
sleep 10
xdotool mousemove 150 60
sleep 60
done
下载ts视频
ffmpeg -i https://.../index.m3u8 -acodec copy -vcodec copy output.mp4
查询当前所有连接的ip
netstat -ntu
将 tcp 过滤出来 : netstat -ntu | grep tcp
将第五列单独截出来: netstat -ntu | grep tcp | awk ‘{print $5}’
仅列出IP: netstat -ntu | grep tcp | awk ‘{print $5}’ | cut -d: -f1
使用 sort 默认字符顺序将字段值排序 :netstat -ntu | grep tcp | awk ‘{print $5}’ | cut -d: -f1 | sort
将已经排序好的字段计算不同值的数目 : netstat -ntu | grep tcp | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c
服务器登陆报告
即在有用户通过ssh时,报告信息到微信。qywx是我的一个通知信息到企业微信的工具
nano /etc/profile
#获取当前通过22端口连接的IP
getip=`netstat -ntu | grep :22 | awk '{print $5}' | cut -d: -f1 | sort`
./qywx "\n服务器有用户登陆:\n$getip"
查看网络信号强度和质量
现在来看这个所谓的dBm,数值范围在-XX~0之间。这个数越大,信号强度越高。
iwconfig wlan0 | grep -i –color quality //查询网络连接质量
或
iwconfig wlan0 | grep -i –color signal //查询信号强度
下载网站
wget -r -p -np -k -w 4 –random-wait http://xxx.com/xxx
参数解析:
-r, –recursive(递归) specify recursive download.(指定递归下载)
-k, –convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)
-p, –page-requisites(页面必需元素) get all images, etc. needed to display HTML page.(下载所有的图片等页面显示所需的内容)
-np, –no-parent(不追溯至父级) don’t ascend to the parent directory.
-w 4 延时4秒
--random-wait 在延时时间的0.5-1.5倍之间随机延时
二进制显示文件内容
cat ./aaa | hexdump -C
tail -n 2 ./aaa | hexdump -C 只显示后面部份
下载网络m3u8格式视频
ffmpeg -i http://hls.com/aaaaa.m3u8 1.mp4
ffmpeg转码加速
ffmpeg -i 1.ts -c:v h264_amf output.mp4
实际这里是使用了GPU。不同的硬件,可能需要不同的解码/压缩方式(h264_amf为amd显卡)
批量将aac音频转换为mp3
find . -name "*.aac" -exec ffmpeg -i {} -acodec libmp3lame {}.mp3
PowerShell: Get-ChildItem -Filter "*.mp4" | ForEach-Object { ffmpeg -i $_.FullName -acodec libmp3lame ($_.FullName + ".mp3") }
顺便扩展名也要改:
for file in *.mp4.mp3; do mv -- "$file" "${file%.mp4.mp3}.mp3"; done
PowerShell: Get-ChildItem -Filter "*.mp4.mp3" | Rename-Item -NewName { $_.Name -replace "\.mp4\.mp3$", ".mp3" }
播放音频指定位置
用于把多个语音合成为一个文件,使用时指定开始及结束位置.
mplayer -ss 13.0 -endpos 0.9 音频.mp3
主机检查
一般来说,通过Ping来检查主机是否基本正常
#!/bin/bash
PingCheck()
{
echo "Check IP " $1
local count=0
# 主机不通5次,则报警
while [ $count -lt 4 ]; do
ping -c 1 -q $1 > /dev/null
if [ $? -ne 0 ]; then
# 主机不通
count=`expr $count + 1`
sleep 5
else
# 主机通,退出
return 0
fi
done
curl -H "Title:服务器问题" -d $2 ntfy.sh/ease
return -1
}
# 先确定自己有没有病(能Ping通外网)
# 自己不能Ping通外网,消息其实发不出去。只有能Ping通外网,才会检查其它主机。
PingCheck baidu.com "自己不通"
if [ $? -eq 0 ]; then
PingCheck 118.123.1.151 "服务器118.123.1.151(scwy.net)不通"
PingCheck 192.168.8.5 "服务器192.168.8.5(pi3主机)不通"
PingCheck 192.168.8.22 "服务器192.168.8.22(邮件服务)不通"
fi
内存清理
sudo su - // 先进入root sync // 将系统缓冲数据写入磁盘 echo 1 > /proc/sys/vm/drop_caches // 丢弃一些系统缓存 echo 3 > /proc/sys/vm/drop_caches // 清空缓存,临时文件和可回收文件
递归搜索文件内容
grep -rn “hello,world!” *
- : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
Nano
Alt + Shift + 3 显示行号
相关目录
/etc/update-motd.d/ 登陆时的脚本
/etc/update-motd.d/50-landscape-sysinfo 登陆时显示系统信息,它是调用了/usr/bin/landscape-sysinfo这个脚本来生成
搜索包含文本
grep -rl ‘abcdefg’ . 列出所有包含字符abcdefg的文件
grep -rn ‘abcdefg’ . 列出所有包含字符的文件,并显示行号