频繁使用的命令(记录下)

Linux系统 2020-10-23 3333

django部分

启动Django服务器:python manage.py runserver 0.0.0.0:8000
迁移数据库:
python manage.py makemigrations
python manage.py migrate
创建超级用户:python manage.py createsuperuser
收集静态数据(部署时用):python manage.py collectstatic
shell环境:python manage.py shell

Python部分

// virtualenv 创建虚拟环境
pip install virtualenv
virtualenv venv

// 项目导出requirements.txt
pip install pipreqs 
pipreqs ./ --encoding=utf-8

上传pypi

python setup.py sdist bdist_wheel
twine upload dist/*

nginx部分

nginx的命令非常杂,杂到你必须1个试,看管不管用

启动:
sudo nginx start
service nginx start
***********
cd usr/local/nginx/sbin
./nginx
***********
nginx -c /usr/local/nginx/conf/nginx.conf
// 或者
cd /usr/local/nginx/sbin
. /nginx
************
重启:
sudo nginx -s reload #重启nginx
./nginx -s reload
停止:
nginx -s stop  # 快速停止nginx
nginx -s quit  # 完整有序的停止nginx

lsof -i:80 或者  ps -ef | grep nginx  # 通过杀进程
kill -9
pkill -9 nginx # 强制停止

查看nginx具体错误:systemctl status nginx.service

启动命令:
systemctl start nginx
如果你想优雅地停止 Nginx 服务,你可以使用 `nginx -s quit`,它会在处理完所有的客户端请求后才停止服务。
如果你想要快速停止 Nginx 服务,可以使用 `nginx -s stop`,但这可能会导致某些请求尚未完成处理。

MySql

启动mysql:# 路径是安装mysql的路径
方式一:sudo /etc/init.d/mysql start 
方式二:sudo start mysql
方式三:sudo service mysql start

停止mysql:
方式一:sudo /etc/init.d/mysql stop 
方式二:sudo stop mysql
方式san:sudo service mysql stop

重启mysql:
方式一:sudo/etc/init.d/mysql restart
方式二:sudo restart mysql
方式三:sudo service mysql restart

systemctl restart mysqld.service 
systemctl start mysqld.service 
systemctl stop mysqld.service

# 修改密码
1.进入etc/mysql/my.cnf 添加以下内容
[mysqld]
skip-grant-tables // 无密码设置
2.$ mysql -u root
3.use mysql
4.update user set authentication_string='xxxxxxxxxx' where user='root';
5.flush privileges;
6.quit
7.重启mysql

uwsgi

启动:uwsgi --ini uwsgi.ini 
停止:uwsgi --stop uwsgi.pid 
重启:uwsgi --reload uwsgi.pid 
强制停止:killall -9 uwsgi 

# 通过杀进程
ps aux | grep uwsgi
kill -9 xxx

supervisor

supervisorctl status  # 查看任务状态

service supervisor start # 启动
sudo supervisorctl reload # 重启
sudo supervisorctl update # 更新
sudo supervisorctl stop  # 停止

supervisorctl reread # 重新读取配置
supervisorctl update # 更新配置 
supervisorctl restart nginx  # 重启 nginx
killall nginx  # 杀掉所有的 nginx 进程

Redis

$ whereis redis
/usr/local/bin/redis.conf
$ ./redis-server redis.conf 启动
$ systemctl restart redis // 重启redis

Mongo

启动
mongod --config /etc/mongodb.conf
后台进程
mongod --config /etc/mongodb.conf --fork
关闭
pkill mongod

创建用户
关闭mongod.conf中的auth验证
use admin
db.createUser({user:"",pwd:"",roles:[{role:"root",db:"admin"}]}); // 创建超级管理员账号

创建数据库
use test_db // 创建test_db数据库,但是查询无法查到
db.runoob.insert({"name":"菜鸟教程"})//向其中插入数据后,才能查询到
>db.createUser({user:'test',pwd:'test',roles:[{role:'readWrite',db:'testDB'}]}) // 为数据库创建用户
Successfully added user: {
    "user" : "test",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "testDB"
        }
    ]
}  
>
授权
> use admin    //切换到admin数据库
switched to db admin
> db.auth('admin'.'admin')  // 使用db.auth('用户名','密码')进行授权

Linux

1.Linux服务器开放端口号
1、查看端口状态,比如redis 6379

firewall-cmd --zone=public --query-port=6379/tcp
2、如果是no-表示关闭,yes-表示开启
[root@localhost ~]# firewall-cmd --zone=public --query-port=6379/tcp
no
3、开启状态
[root@localhost ~]``# firewall-cmd --zone=public --add-port=6379/tcp --permanent``success -- 表示开启成功
4、防火墙重载
[root@localhost ~]# firewall-cmd --reload
success
5、再次查看端口状态
[root@localhost ~]# firewall-cmd --zone=public --query-port=6379/tcp
yes
6、可以在客户端随意连接成功。

方式2
# 打开8080端口
sudo ufw allow 8080/tcp

# 关闭8080端口
sudo ufw delete allow 8080/tcp
可以使用以下命令查看已经开放的端口:
sudo ufw status

2.查看端口占用
netstat -nap | grep 7002
查看所有端口占用
netstat -nultp
查看进程
ps aux
查询进程名对应的进程信息
ps a | grep 进程名


修改dns,查看dns
/etc/resolv.conf
修改文件 /etc/resolvconf/resolv.conf.d/base(这个文件默认为空),添加以下内容:
nameserver 8.8.8.8
nameserver 8.8.4.4
:wq 保存退出
执行更新:
resolvconf -u
通过 /etc/resolv.conf 查看 DNS 设置:
可看到多了:
nameserver 8.8.8.8
nameserver  8.8.4.4
如果运行resolvconf -u出现/etc/resolvconf/update.d/libc: Warning:/etc/resolv.conf is not a symbolic link
$ sudo rm /etc/resolv.conf
$ sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
$ systemctl restart resolvconf

PS: 修改了时间和修改时区不一样
输入“timedatectl”命令检查当前是日期和时区设置。
timedatectl
修改时区
sudo timedatectl set-timezone Asia/Shanghai
查看时区
date -R
查看时间
date
修改时间
date -s "20220703  17:50:00"  #yyyymmdd hh:mm:ss
修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
网络校时
apt-get install ntpdate
ntpdate asia.pool.ntp.org

后台运行Jupyter Notebook
nohup jupyter notebook --allow-root > jupyter.log 2>&1 &

Git

1.查看分支
git branch 列出本地已经存在的分支,并且当前分支会用*标记
git branch -r 查看远程版本库的分支列表
git branch -a 查看所有分支列表(包括本地和远程,remotes/开头的表示远程分支)
git branch -v 查看一个分支的最后一次提交
git branch --merged  查看哪些分支已经合并到当前分支
git branch --no-merged 查看所有未合并工作的分支

2.创建新分支
git branch 新分支名称
3.切换分支
git checkout 分支名称
4.创建分支的同时,切换到该分支上
git checkout -b 新分支名称
5.从远程仓库pull(拉取)代码到本地分支
git pull origin 远程分支名称:本地分支名称

适用于第一次创建
git checkout -b dev_v2 remotes/origin/dev_v2
五、删除分支
1、删除本地分支(不能删除当前所在的分支,如果要删除,必须先切换到其他分支上)
git branch -d 分支名称
如果删除时报错:error: The branch '分支名称' is not fully merged. (意思是:分支未完全合并)。解决方法是使用 -D 强制删除,代码如下:
git branch -D 分支名称
2、删除远程分支
git push origin :分支名称

六、合并分支
1、假如我们现在位于分支dev上,刚开发完自己负责的功能,执行了下列命令:
git  add .
git  commit -m '某某功能已完成,提交到[分支名称]分支'
git  push -u origin 分支名称
2、首先切换到master分支上
git checkout master
3、如果是多人开发的话,需要把远程master分支上的代码pull下来
git pull origin master
4、然后把dev分支的代码合并到master上
git merge 分支名称
 如果git merge的时候出现冲突,可以执行下面的命令取消merge:
git merge --abort:
5、然后查看状态
git status
6、最后一步,Push推送到远程仓库
git push origin master

版本回退
git reset --hard

--------------------------------------------------------------------
merge失败:error: You have not concluded your merge (MERGE_HEAD exists).

$:git merge --abort
git pull GUI操作
git merge GUI操作
--------------------------------------------
切换全局用户和邮箱
git config --local user.name xxx
git config --local user.email xxx

查看当前用户和邮箱
git config user.name
git config user.email

在提交和拉取github代码时常出现Failed to connect to github.com port 443: Timed out
解决方法,使用梯子(如clash 端口为7890)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890

设置代理后,记得清除,否则可能影响其他git仓库的代码提交和拉取

#取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

#查看代理
git config --global --get http.proxy
git config --global --get https.proxy

gunicorn

启动
gunicorn main:app -c gunicorn.py
获取Gunicorn进程树:
pstree -ap|grep gunicorn
重启Gunicorn任务
kill -HUP 30080
退出Gunicorn任务
kill -9 30080

jupyter

前台启动-jupyter notebook
后台启动-nohup jupyter notebook --allow-root > jupyter.log 2>&1 &

docker

官方仓库地址: https://hub.docker.com/
1.安装docker-compose (方式1)
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
1.1 (方式2)
apt install docker-compose
2.卸载
rm /usr/local/bin/docker-compose
3.查看是否安装成功
docker-compose version
4.查询虚拟机的ip
docker-machine ip defalut

docker run -p 80:80 --name nginx --restart=always -v /home/docker-images/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-images/nginx/conf.d:/etc/nginx/conf.d -d nginx:latest

运行DockerFile
docker build -t test:1.0 .
运行docker-compose 文件
docker-compose up -d
如果文件名称不是docker-compose.ymal,则使用如下命令
docker-compose -f base_service.yml up -d

查看docker 容器的日志
以下是使用logs命令查看容器日志的示例:

$ docker logs <container_id>
其中,<container_id>是要查看日志的容器的ID或名称。

如果要查看日志的容器在后台运行,可以使用-f参数实时查看日志:

$ docker logs -f <container_id>
此外,还可以使用--tail参数指定要显示的日志行数:

$ docker logs --tail 100 <container_id>
上述命令将显示容器的最后100行日志。

进入正在运行的容器
docker exec -it e32570c7b5cf bash
从容器退出 使用ctrl+D

# docker内没有vim,但apt-get update太慢时,进行换源(注意,sources.list不一定就是/etc/sources.list,也可能是/etc/apt/sources.list或其他)
echo "">/etc/sources.list
echo "deb http://mirrors.ustc.edu.cn/debian/ buster main">>/etc/sources.list
echo "deb http://mirrors.ustc.edu.cn/debian/debian-security buster/updates main">>/etc/sources.list
echo "deb http://mirrors.ustc.edu.cn/debian/debian buster-updates main">>/etc/sources.list

# 从docker容器内部拷贝文件到宿主机
docker cp <container_id>:<container_path> <host_path>

 

标签:Linux系统

文章评论

评论列表

已有0条评论