一、什么是shell?
shell 既是一种命令语言,又是一种程序设计语言,能实现人机交互,通常应用在我们平时所说的服务器,服务器可能应用最多的就是centos。
bash 是shell的一种,应用广泛一切皆文件,那什么是shell脚本?它能实现自动化,实际上就是在文件上编写了shell命令。
- 单引号:所见即所得,如打印就直接打印出看到的;
- 双引号:所见非所得,它会先把变量解析之后,再输出(存在变量)
- 反引号(``) :命令替换,通常用于把命令输出结果传给入变量中
[root@iZbp19lugf22zbsubsf1y6Z ~]# echo '$home'
$home
[root@iZbp19lugf22zbsubsf1y6Z ~]# echo "$home"
[root@iZbp19lugf22zbsubsf1y6Z ~]#
![](https://i-blog.csdnimg.cn/blog_migrate/3437f7052f073a6aaf88fa0dff0d47ab.png)
二、常用命令之文件操作
1、查看磁盘空间:df -h
当然也可以直接df、或df -m等等,广深小龙常用就是:df -h
![](https://i-blog.csdnimg.cn/blog_migrate/d2b88b779cfe3245b75c40ea465a4ccd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f712be21f0f7240fa7657f016bc0a817.png)
[root@iZbp19lugf22zbsubsf1y6Z ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 7.9G 30G 21% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 824K 919M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
2、查看当前目录或文件:ls
可以接目录如:ls ~ 但是平时喜欢这用:ll 因为ll=ls -l,既是缩写了方便快捷。
![](https://i-blog.csdnimg.cn/blog_migrate/d2b88b779cfe3245b75c40ea465a4ccd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f712be21f0f7240fa7657f016bc0a817.png)
[root@iZbp19lugf22zbsubsf1y6Z ~]# ls
djo.out easymock hrun_django hrun_mysql jenkins python36 sql start.sh swapfile
[root@iZbp19lugf22zbsubsf1y6Z ~]# ls
djo.out easymock hrun_django hrun_mysql jenkins python36 sql start.sh swapfile
[root@iZbp19lugf22zbsubsf1y6Z ~]# ls -l
total 1048612
-rw-r--r-- 1 root root 96 Jan 24 17:59 djo.out
drwxr-xr-x 4 root root 4096 Jan 8 16:24 easymock
drwxr-xr-x 3 root root 4096 Jan 8 16:24 hrun_django
drwxr-xr-x 5 root root 4096 Jan 8 15:52 hrun_mysql
drwxr-xr-x 17 1000 1000 4096 Apr 11 16:05 jenkins
drwxr-xr-x 6 root root 4096 Jan 8 19:41 python36
drwxr-xr-x 5 root root 4096 Feb 28 18:16 sql
-rw-r--r-- 1 root root 253 Jan 8 20:32 start.sh
-rw-r--r-- 1 root root 1073741824 Jan 8 15:50 swapfile
[root@iZbp19lugf22zbsubsf1y6Z ~]# ll
total 1048612
-rw-r--r-- 1 root root 96 Jan 24 17:59 djo.out
drwxr-xr-x 4 root root 4096 Jan 8 16:24 easymock
drwxr-xr-x 3 root root 4096 Jan 8 16:24 hrun_django
drwxr-xr-x 5 root root 4096 Jan 8 15:52 hrun_mysql
drwxr-xr-x 17 1000 1000 4096 Apr 11 16:05 jenkins
drwxr-xr-x 6 root root 4096 Jan 8 19:41 python36
drwxr-xr-x 5 root root 4096 Feb 28 18:16 sql
-rw-r--r-- 1 root root 253 Jan 8 20:32 start.sh
-rw-r--r-- 1 root root 1073741824 Jan 8 15:50 swapfile
3、切换目录:cd
波浪线为当前用户的家目录 ①cd ~ ②返回上级目录:cd ..
![](https://i-blog.csdnimg.cn/blog_migrate/d2b88b779cfe3245b75c40ea465a4ccd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f712be21f0f7240fa7657f016bc0a817.png)
[root@iZbp19lugf22zbsubsf1y6Z easymock]# cd ~
[root@iZbp19lugf22zbsubsf1y6Z ~]# cd easymock/
[root@iZbp19lugf22zbsubsf1y6Z easymock]# cd ..
[root@iZbp19lugf22zbsubsf1y6Z ~]#
4、创建文件夹:mkdir 目录名
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# mkdir test
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# ls
test
5、创建文件: touch 文件名
[root@iZbp19lugf22zbsubsf1y6Z ~]# touch test
[root@iZbp19lugf22zbsubsf1y6Z ~]# ll
total 1048612
-rw-r--r-- 1 root root 0 Apr 11 22:39 test
6、vi 编辑器:vi 文件名 (无当前文件会新建)
vi 有三个模式:①默认命令模式:移动光标 ②插入模式:i ③底行模式:esc
w:保存 q:退出 叹号:强制退出
广深小龙
:wq!
7、查看当前路径:pwd
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# pwd
/root/gsxl
8、复制文件:cp 需复制文件 存在新复制文件路径
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# cp t.txt t
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# ll
total 12
-rw-r--r-- 1 root root 46 Apr 11 22:53 t
drwxr-xr-x 2 root root 4096 Apr 11 22:42 test
-rw-r--r-- 1 root root 46 Apr 11 22:49 t.txt
9、移动文件:mv 需移动文件 存在文件路径
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# mv t test/
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# ll test/
total 4
-rw-r--r-- 1 root root 46 Apr 11 22:53 t
10、查找目录或文件存放的路径:find / -name 名称 (可加匹配符)
根目录:/ 意思是根目录下找以gsx开头的目录或文件。
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# find ~ -name gsx*
/root/gsxl
11、查看文件内容:cat 文件名
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt
广深小龙
文件内容过多推荐用:less 文件 (可翻页按b,及光标移动)
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# more t.txt
广深小龙
12、添加软连接(类似win的快捷方式):ln -s 文件名称 快捷方式名称
ln -s /root/python36/bin/pip /usr/bin/pip3
13、文件权限:chmod -x 文件名
当然 chmod 还可以带其它参数,比如常用的:chmod 755 文件名
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# chmod 755 test
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# ll
total 8
drwxr-xr-x 2 root root 4096 Apr 11 22:55 test
14、文件内容追加:echo "内容">> 目录文件 (没有文件会创建一个)
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt
vm.swappiness = 6661111
asd
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# echo "hello">> ~/gsxl/t.txt
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt
vm.swappiness = 6661111
asd
hello
15、替换文件内容:sed "s/替换内容/新内容/g" 文件名
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# cat t.txt
vm.swappiness = 6661111
asd
hello
# 加上 -i 参数既不打印显示
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# sed "s/asd/gsxl/g" t.txt
vm.swappiness = 6661111
gsxl
hello
16、查看程序log日志:tail -f log文件
上面的是动态打印,也可以打印指定行数如:tail -500f ~/gsxl/out.log
17、其它命令:
①重启:reboot
②wget下载:wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
③解压:tar -xvf xxx.tgz
unzip xxx.zip
④yum安装、编译安装:
yum install java-1.8.0-openjdk-devel.x86_64
make
make install
⑤ping命令:ping url
⑥Django项目后台运行:nohup python3 manage.py runserver 0.0.0.0:8000 >djo.out 2>&1 &
杀掉进程:ps -aux | grep python|xargs kill -9
![](https://i-blog.csdnimg.cn/blog_migrate/705baacb9bbd6da94e4439525babee97.png)
三、常用命令之进程操作
1、查看进程(类似win的任务管理):top
![](https://i-blog.csdnimg.cn/blog_migrate/dfe669e9ad1ce03e16530a9a50964ca0.png)
2、查找某个服务的进程:ps -ef | grep 服务名称
[root@iZbp19lugf22zbsubsf1y6Z gsxl]# ps -ef | grep jenkins
1000 24520 24503 0 Mar30 pts/0 00:00:32 /sbin/tini -- /usr/local/bin/jenkins.sh
1000 24552 24520 0 Mar30 pts/0 00:23:29 java -Duser.home=/var/jenkins_home -Duser.timezone=Asia/Shanghai -Djenkins.model.Jenkins.slaveAgentPort=50000 -jar /usr/share/jenkins/jenkins.war
1000 27057 24552 0 Mar30 pts/0 00:00:00 [jenkins.sh] <defunct>
3、杀掉进程:kill -9 进程号
如上面的进程:kill - 9 24520
4、查看所有端口的进程:netstat -tlnp
![](https://i-blog.csdnimg.cn/blog_migrate/cf63feaa228c4c8628d11e7c5e7f3402.png)
查看连接服务的ip:netstat -tnp
![](https://i-blog.csdnimg.cn/blog_migrate/c927f9cc90e22f62e129beedb072e238.png)
5、查看端口是否被占用:netstat -anp | grep 端口号
[root@iZbp19lugf22zbsubsf1y6Z ~]# netstat -anp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 4625/python3
[root@iZbp19lugf22zbsubsf1y6Z ~]#
6、查看机器内存:free -m
参数可以-g、-m等
[root@iZbp19lugf22zbsubsf1y6Z ~]# free -m
total used free shared buff/cache available
Mem: 1838 1141 174 4 522 481
Swap: 1023 112 911
最后:
1、一些服务重启的 shell 脚本示例:
运行shell脚本:. strat.sh
[root@iZbp19lugf22zbsubsf1y6Z ~]# cat start.sh
ps -aux | grep python|xargs kill -9
cd /root/easymock
docker-compose down
docker restart hrun zentao jenkins
cd /root/hrun_django/httprunnermanger_web
nohup python3 manage.py runserver 0.0.0.0:8000 >djo.out 2>&1 &
cd /root/easymock
2、就好像win的bat文件脚本一样,广深小龙也写了一个git的,运行可以上传or同步代码:
cd G:/web_django
git status
git add *
git commit -m "Django"
git pull
git push origin master
# pause
shutdown/s
# 最后关机
因为我一般是睡觉前习惯运行一遍bat文件,最后自动关机,就可以去刷牙睡觉了。下一节将是三剑客的复习。
![](https://i-blog.csdnimg.cn/blog_migrate/9a569ab73e0e24086435f071fed0bada.png)
欢迎来大家QQ交流群一起学习:482713805 !!!