shell & ssh
[[toc]]
日常用到的Shell命令
命令名 | 功能描述 |
---|---|
clear | 清除屏幕或窗口内容 |
env | 显示当前所有设置过的环境变量 |
date | 显示系统的当前日期和时间 |
cal | 显示日历 |
vi 修改文件 | dd删除一行 A编辑选中的最后一行代码 , |
:set nu | 加索引 |
touch | 创建文件 |
mkdir | 创建文件夹 |
du -ha [文件名称] | 查看目录/文件占用空间大小 |
ls -lh | 看文件大小 |
ll | 等价 ls -al |
netstat -nltp | grep 443 |
mv | 修改文件名 移动文件 mv index.html .bash_profile |
cat | 查看内容 |
sudo vim /etc/hosts | ws破解 |
ssh -p 2289 root@182.92.117.162 | 登录ssh |
chattr +i .user.ini | 重新恢复文件不可更动属性 |
chmod -R 777 pet_07 | 赋权限 |
r:可读 w:可写 x:可执行 -rw——- (600) – 只有属主有读写权限。 -rw-r–r– (644) – 只有属主有读写权限;而属组用户和其他用户只有读权限。 -rwx—— (700) – 只有属主有读、写、执行权限。 -rwxr-xr-x (755) – 属主有读、写、执行权限;别的用户组只有读、执行权限。 -rwx–x–x (711) – 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。 -rw-rw-rw- (666) – 所有用户都有文件读、写权限。这种做法不可取。 -rwxrwxrwx (777) – 所有用户都有读、写、执行权限。更不可取的做法。 |
参数解释 |
sudo chown -R $(whoami) or【你的用户名】 /Users/hzf/Desktop/projectSvelte | 更改某个目录或文件的用户名和用户组 |
yarn version –new-version 1.0.0 | 更改版本号 |
curl http://www.jing999.cn:8000/banner | http命令行工具 |
ping -c 10 www.jing999.cn | ping |
kill -9 PID | 杀死这个进程 |
npx browser-sync start -s . -f . | 静态页面动态刷新 |
browser-sync start –server –files . | 静态页面动态刷新 |
rm -rf node_modules/.cache/babel-loader | umi的bug |
nginx -s reload | 重启nginx |
tar -czvf dist.tar.gz dist | dist 压缩 |
tar -xzvf dist.tar.gz | 解压 |
-c: 建立压缩档案 -x:解压 -z:有gzip属性的 -v:显示所有过程 -r:向压缩归档文件末尾追加文件 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 |
参数解释 |
find / -name jenkins | 查看安装目录 |
sed -i ‘’ “s/666/777/g” config | 修改文字 666换成777 |
看一共写了多少代码
find . “(“ -name “.vue” -or -name “.jsx” -or -name “.tsx” -or -name “.css” -or -name “.less” -or -name “.scss” -or -name “.js” -or -name “.ts” “)” -print | xargs wc -l
添加环境变量
- 临时有效
- export PATH=$(pwd)/bin:$PATH
- 软连接 /usr/local/bin/就是环境变量目录
- ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
- 用户主目录下的.bashrc 或.profile文件(推荐)
- export PATH=/Users/hzf/mongodb/bin:$PATH
- 执行source ~/.bashrc, 立即生效
- export PATH=/Users/hzf/mongodb/bin:$PATH
VIM
批量注释
从需要被注释的第一行开始,将光标移动到行首,
按下 Ctrl + v
接着按下方向键
下,一直移动到需要被注释的最后一行,
这时可以看到,这些需要被注释的行的行首第一个字符已经全部被选中
然后按下 Shift + i
,批量插入,
这时光标会跳到第一行的行首,不用管,继续按下Shift + 3
,也就是 #
键
最后按下 Esc
键,就可以看到刚才被选中的行的行首都会加多一个#
号
批量注释完毕
去注释
对于一大段被注释的代码,需要去掉注释的时候,也可以一次性操作完
不用一个一个去删,具体操作如下:
光标移到需要去除注释的第一行的行首,跟上面的一样,
按下 ·Ctrl + v
接着按下方向键
下,一直移动到需要被注释的最后一行,
这时候可以看到,行首的第一个字符#
已经被选中了,
然后按下d
键就可以全部删掉行首的#
字符了。
Shell编程
# run: sh depoly.sh 123 123 |
ssh 不能登录服务器
提示警告信息如下:
arnold@WSN:~$ ssh 120.79.229.197
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
08:98:a9:cc:f8:37:20:6b:b4:b1:6c:3a:15:b9:a9:92.
Please contact your system administrator.
Add correct host key in /home/arnold/.ssh/known_hosts to get rid of this message.
Offending key in /home/arnold/.ssh/known_hosts:2
RSA host key for 10.18.46.111 has changed and you have requested strict checking.
Host key verification failed.
原因分析:
It is also possible that a host key has just been changed.
我之前对ssh服务器重装了系统,导致所有与原系统建立过ssh连接的系统都无法再建立连接,因为在于原系统建立首次连接时,双方相互记录了对方的公钥(ssh基于非对称密钥技术),在ssh服务主机重装系统后,公钥改变了,任以旧版本公钥的主机自然是无法与新系统连接的。
网上还有分析为ssh主机被人黑了,并在消除入侵记录时对known_hosts文件做了改动。当然也不排除这种可能,但我估计我是没那个福气了:)
解决方案:
删除 ~/.ssh/known_hosts
文件,或者如果你可以判断出known_hosts中原ssh服务器的公钥,删去那部分
,
然后后再次建立新的连接,即可获得新的公钥。
关于sshpass使用举例
使用-p参数指定登录密码
# 免密码登录 |
示例:
#把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下 |
脚本
|
脚本用env启动的原因,是因为脚本解释器在linux中可能被安装于不同的目录,env可以在系统的PATH目录中查找。同时,env还规定一些系统环境变量。
linux-ab压力测试
# 基本用法 |
参数释义 总共请求100次 一次请求10个 post文件 请求头信息 地址
对相关参数进行说明:
-n 即requests,用于指定压力测试总共的执行次数。
-c 即concurrency,用于指定的并发数。
-t 即timelimit,等待响应的最大时间(单位:秒)。
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v 即verbosity,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:“Apache=1234”(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:“Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的和端口号,例如:“126.10.10.3:88”。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。
[root@hadoop ab]# ab -c 10 -n 100 https://ah2.zhangyue.com/zybk/subscribe/talk?actId=949 |
针对jenkins总结的
启动jenkins
java -jar jenkins.war –httpPort=8081
如果想要在linux后台一直运行,则要开始加nohup,在末尾加&号
nohup java -jar jenkins.war –httpPort=8081 &
启动后 会生成一个nohup.out输出,需要的话,可以tail -f nohup.out实时查看日志
列出jenkins的所有进程
ps -aux|grep jenkins
杀死这个进程
kill -9 [PID]
启动jenkins的另外方式
service jenkins start/stop/restart/status
systemctl start jenkins.service
查看运行的后台进程
jobs -l
jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)
ps -ef
ps -aux|grep jenkins
查看使用某端口的进程lsof -i:3000
kill -9 [pid]
终端写入内容
echo "hello world" >> test.txt # 追加 |