# 或者ctrl+r
mcfly search
for var in {0..2}
do
#用{}把循环体括起来,后加一个&符号,代表每次循环都把命令放入后台运行
#一旦放入后台,就意味着{}里面的命令交给操作系统的一个线程处理了
{
echo ${var}
}&
done
wait
#wait命令的意思是,等待(wait命令)上面的命令(放入后台的)都执行完毕了再往下执行
curl -i -X POST \
http://localhost:4080/api/test/_doc \
-u user:pwd \
-H 'Content-Type: application/json' \
-d '{"name":"中文12344", "value":"https://abc.iste/"}'
curl -X DELETE \
http://127.0.0.1:4080/api/index/xxx/ \
-u user:pwd
# 获取本机外网ip
curl ifconfig.me
# dnf是yum的继承者,更好用
# 查找提供指定内容的软件包
dnf provides '*/chsh'
# 以 Fedora 为基准的安装包如下
dnf install -y util-linux-user
# 搜索一定要加引号
dnf search 'keyword'
# 修改默认的shell
chsh [option] user
# 带调试查看ssh登陆过程,用于卡
ssh -vvv xxxx
# 后来ssh -v 登录查看了下日志,发现一直卡在debug1: SSH2_MSG_KEXINIT sent。直到最后链接失败。
# 网上查了很多,发现是因为mtu设置的数值太大。网络->高级->手动(平时是自动)->指定1500
~/.ssh/config如果不存在,则创建.
...
# Host可以自定义
Host github2
# github.com这个是真实远程服务器,不能修改
# id_ecdsa.pub内容要在github相应帐户添加为ssh密钥
HostName github.com
PreferredAuthentications publickey
# 指明用哪个文件
IdentityFile ~/.ssh/id_ecdsa
...
测试config
#github2为config文件中的Host值
ssh -T git@github2
# 查看ssh登陆详情
ssh -vvvT git@github2
修改远程仓库url
#git@github.com:username/reposname.git==>git@github2:username/reposname.git
#github2为config文件中的Host值,表明reposname要采用id_ecdsa密钥
git clone git@github2:username/reposname.git
本地reposename配置.git/config
cd reposname
git config user.name 'username'
git config user.email 'username@xx.com'
vim config
# 即每隔30秒,向服务器发出一次心跳
ServerAliveInterval 30
# 若超过100次请求,都没有发送成功,则会主动断开与服务器端的连接。
ServerAliveCountMax 100
vim /etc/ssh/sshd_config
# 表示每隔多少秒,服务器端向客户端发送心跳
ClientAliveInterval 30
# 表示上述多少次心跳无响应之后,会认为Client已经断开
ClientAliveCountMax 6
#find标准输出为每行一个文件名
#直接通过管道转为grep的标准输入,则grep搜索标准输入包括protobuf的
#输出结果:文件名以.mod结束且包括protobuf
find . -name "*.mod" | grep protobuf
#管道转为xargs的标准输入,
#xargs把标准输入转化为grep的参数
#grep指定的文件名里内容包括protobuf的
#输出结果:文件名以.mod结束且文件内容包括protobuf
find . -name "*.mod" | xargs grep protobuf
# 搜索名字叫html目录
find . -type d -name 'html'
set -v 回显命令,但不替换变量值
set -x 回显命名,替换变量值
# 用双引号处理带空格的文件
cp "带空格的文件" newfile
ls -l | grep "^-" | wc -l 当前目录下文件总数
# linux网络共享网盘nfs,/etc/exports文件增加一个共享目录
#产生ssh密钥对,注意-C大写,保存id_rsa文件名,ssh会默认读取,否则就要明确指出
#-b:指定密钥长度;-C:添加注释;-f:指定用来保存密钥的文件名;-t:指定要创建的密钥类型。
#现在很多地方都不支持rsa,建议采用ed25519/ecdsa
# -t [dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
ssh-keygen -t rsa -C "xxx@aliyun.com" -f id_rsa
# 注意-t之后的空格,有可能提示不识别参数
ssh-keygen -t ed25519 -C "xxx@aliyun.com" -f id_ed25519
# 显示正在使用的shell
echo $SHELL
# 快速切换目录, vim .bashrc/.zshrc source .bashrc/.zshrc
export $CDPATH=.:~:/xxx/
#获取历史命令
#zsh
cat $HOME/.zsh_history
#bsh
cat $HOME/.bash_history
# 查看磁盘占用情况
df -h
#查看当前一级目录文件大小
du -h --max-depth=1
# 清空./var/journalctl日志
journalctl --vacuum-size=10M
# ls人性化阅读
ls -lh
# 复制到粘贴板
#windows
clip < ~/.ssh/id_ed25519.pub
#mac
pbcopy < ~/.ssh/id_ed25519.pub
#linux
xclip -sel clip < ~/.ssh/id_ed25519.pub
# 获取脚本所在目录
dirname $0
cd `dirname $0`
pwd
# 获取home目录
echo $HOME
# 当前时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
uptime
# 解决ssh超级慢(去除服务端利用dns反查客户端)
vi /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
# 列出所有监听tcp端口程序
netstat -ltpn
#查看所有服务监听端口
netstat -a
# 监听tcp指定端口
tcpdump tcp port xxx
#查看网卡流量:每1秒 显示 1次 显示 10次
sar -n DEV 1 10
# 查看命令执行情况
set -V
#防火墙:
#查看是否打开端口:
firewall-cmd --list-all
#添加端口:
firewall-cmd --permanent --add-port=3000/tcp
#批量增加端口:
firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
#移除端口:
firewall-cmd --permanent --remove-port=7780/tcp
#重新加载规则生效
firewall-cmd --reload
#查找前20名占用内存较大:
ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20
# 建立软连接
ln -s 真实存在目录 软链接
# 使用-j参数 不处理压缩文件中原来目录路径
zip -qj file.zip /xxx/xx/xx
vim /etc/sudoers.d
增加一个文件,添加以下内容
username ALL=(ALL) NOPASSWD:ALL
#!/usr/bin/env bash
cd ${gitdir}
# 批量杀死监控进程 shell脚本或专用管理程序
ps -ef|grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9
# 批量杀死目标进程
ps -ef|grep yyy | grep -v grep | awk '{print $2}' | xargs kill -9
# 拉取最新程序
git pull
# 跑起监控进程
nohup ./xxx.sh >/dev/null 2>&1 &
#!/usr/bin/env bash
while true
do
# 查看目标进程还在不在
procnum=` ps -ef|grep "yyy$"|grep -v grep|wc -l`
if [ $procnum -eq 0 ]; then
cd ${basedir}
nohup ./yyy >/dev/null 2>&1 &
fi
# 延时30秒
sleep 30
done
#!/usr/bin/env bash
# 批量杀死目标进程
ps -ef|grep yyy | grep -v grep | awk '{print $2}' | xargs kill -9
hash=`git rev-parse --short HEAD`
rc=`date "+%Y-%m-%d_%H:%M:%S"`
target=yyy
go build -ldflags "-s -w -X main.GitHash=${hash} -X main.CompileTime=${rc}" -tags=jsoniter -o ${target} ${target}.go
chmod a+x ${target}
rundir=${target}_run
rm -rf ${rundir}
mkdir ${rundir}
mv ${target} ${rundir}
cp -r conf ${rundir}/
nohup ./${target} >/dev/null 2>&1 &
exit
sudo timedatectl set-timezone Asia/Shanghai
sudo lshw -numeric -C display显示显卡信息,lspci | grep -i vga
# Permissions 0644 for '/root/.ssh/id_ecdsa' are too open
# 降低权限
chmod 0600 ~/.ssh/id_ecdsa