操作层——手残如我

0、svn - 本地代码和svn上的代码分开
1、查看Python安装路径
import sys
print(sys.path)
2、查看Python安装包的版本信息
命令行: pip list
3、Windows下从文件夹进入命令行:SHIFT+鼠标右键(文件夹)+W
4、服务器:winscp/SecureCRT——输入host/port/usr/pwd与远端服务器建立连接
5、【Linux命令行常用操作】
pwd: 根目录
zip+文件名+生成名:打包
unzip:解压
压缩成gz文件:gz_cmd = "cd %s; tar -zcvf %s %s" % (server_src_zip, server_tar_file_path, 'apps/' + node_code)
rm -rf +路径:删除某文件/文件夹
rz -be +回车:上传文件 (rz -y -be +回车:覆盖上传)
sz:下载到本地
cd ..:返回上一层级
ls :当前路径所有文件
ll -h +文件名:查看文件大小
du -d n -h:查看当前层级下钻n层的各文件大小
wget [参数] [URL地址] —— 通过链接下载文件

linux定时执行程序命令:crontab
tail -f /var/log/cron : 查看cron的日志
crontab -e : 编辑定时执行程序,每行代表一个程序,eg: 1 4 * * * cd /home/copyfile/copy_file_ljt/&& sh run_data_sync_117.sh
crontab -l :列出定时执行的程序
crontab -r:删除


image.png

ERROR:
用contab命令定时执行Python程序时,程序本身没问题,但定时就是不执行。
如:*/1 * * * * cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log
查看cron日志:【报错】
Aug 29 17:35:01 izwz98pmxwulw602z7dz17z CROND[1251]: (root) CMD (cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log)
Aug 29 17:35:02 izwz98pmxwulw602z7dz17z CROND[1250]: (root) MAIL (mailed 142 bytes of output but got status 0x004b#012) —— 没能成功执行
错误原因:服务器找不到Python的环境变量
解决方法:
1、source /etc/profile && cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log
2、source /root/.bashrc && cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log 【最后用了这个】
之后研究下profile和bashrc的区别,参考:https://www.cnblogs.com/hongzg1982/articles/2101792.html

查看磁盘空间:
du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。
//查看当前目录下各个文件及目录占用空间大小
du -sh *

vi/vim编辑器:
CTL + b :上翻
CTL + f : 下翻
查询"ab" : /ab

ps -ef | grep python 查看含有Python的进程

ps -ef | grep zk_tcp_cbd_server 查看含有zk_tcp_cbd_server的进程

ps命令将某个进程显示出来

grep命令是查找

中间的|是管道命令 是指ps命令与grep同时执行

PS是LINUX下最常用的也是非常强大的进程查看命令

ps -x 查看所有运行的进程(PID)
kill %pid 杀死某进程

Python生成EXE:pyinstaller --onefile --nowindowed --icon=" D:\Queena\PyCharmProjects\dist1\computer_three.ico" guess_exe.py

查看某个进程的内存占用:top -p +pid
https://www.cnblogs.com/freeweb/p/5407105.html

实例2:从远处复制目录到本地
命令:
scp -r [email protected]:/opt/soft/mongodb /opt/soft/

scp命令:
从本地复制到远程

拷贝文件

scp /home/test/test.txt [email protected]:/home/test/

拷贝目录

scp -r /home/test/ [email protected]:/home/test/
从远程复制到本地

拷贝文件

scp [email protected]:/home/test/ /home/test/test.txt

拷贝目录

scp -r [email protected]:/home/test/ v/home/test/

6、有时候我们在liunx上想修改查看python的包路径可以试试以下命令

from distutils.sysconfig import get_python_lib

print(get_python_lib())

7、在linux安装了多版本python时(例如python2.6和2.7),pip安装的包不一定是用户想要的位置,此时可以用 -t 选项来指定位置.

例如目标位置是/usr/local/lib/python2.7/site-packages/ ,要安装xlrd 这个包,则:

$ pip install -t /usr/local/lib/python2.7/site-packages/ xlrd

权限不够则在命令前加sudo。

8、Windows下用pycharm同步/调试服务器上的代码:https://blog.csdn.net/zhaihaifei/article/details/53691873

9、CPU知识:http://blog.sina.com.cn/s/blog_6a6c136d0102ybb5.html

10、PIDS=ps -ef|grep new_data_classify |grep -v grep |grep -v tail | awk '{print $2}'
通过关键字‘new_data_classify’筛选出运行的进程,再过滤掉含‘grep/tail’关键字的进程,最后一行一行打印出第二列,即进程号

11、进程命令及状态说明:https://blog.csdn.net/tianlesoftware/article/details/6457487

12、SecureCRT客户端窗口关闭,或与服务器连接断开后,服务器上运行的程序也被kill掉,解决:

  1. nohup [argument ...] &
    上面命令其实做了两件事,nohup忽略SIGHUP信号,&将任务放在后台运行。
    需要注意的是:nohup默认将程序的标准输出和标准错误输出重定向到nohup.txt文件中,也可以用">filename 2>&1"来更改缺省的重定向文件名。
    2)screen命令:


    screen命令.png

--、简单三部曲
(1)创建会话
#screen -dmS xxx
上面命令用来建立一个处于断开模式的会话,其中,xxx为session name。
(2)列出会话
#screen -list
上面命令用来列出所有会话,这个有点恶心,毫无隐私可言
(3)重连会话
#screen -r xxx
上面命令用来重新连接指定会话,其中,xxx为会话名称。
有了上面3个命令后,基本上你也算是screen圈子里的人了

--、附常用:
1.screen:创建全屏窗口,键入exit退出(退出会话/切换前一个窗口)
[root@tivf06 ~]# screen
2.screen命令后跟你要执行的程序。如:[root@tivf06 ~]# screen vi test.c
3.键入C-a c,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口。
入C-a d,Screen会给出detached提示:
暂时中断会话
4.半个小时之后回来了,找到该screen会话:

[root@tivf06 ~]# screen -ls
There is a screen on:
16582.pts-1.tivf06 (Detached)
1 Socket in /tmp/screens/S-root.
5.重新连接会话:
[root@tivf06 ~]# screen -r 16582

screen命令详解:https://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

13、批量杀死含关键字“main_module_screen”的进程:
ps aux | grep main_module_screen | grep -v grep | awk '{print 2}'| xargs kill -9 一开始一直不起作用,还能查到进程在运行 后来才知道,要把sudo kill -9传进过滤器,而不只是在开头加sudo 所以正确的命令是: ps aux | grep main_module_screen | grep -v grep | awk '{print2}'| xargs sudo kill -9
【一知半解】害死人啊,【拿来主义】要不得啊!!!

14、按文件大小顺序排序列文件:du -s * | sort -nr

du -s * | sort -nr | head 选出排在前面的10个,

du -s * | sort -nr | tail 选出排在后面的10个。

15、pip安装包超时情况解决:https://blog.csdn.net/qq_39161804/article/details/81191977

image.png

PS:查找当前版本Python的位置:cmd -> where python3/python; 查找当前使用的pip的路径:cmd -> where pip
把包装在当前的Python版本下:cmd -> python3 -m pip install xxx
故pip.ini放置的位置,应该在对应的Python下的pip文件夹

16、Linux top命令查看系统运行情况:https://www.cnblogs.com/wbxk/p/10776103.html#_label0_0

17、报错:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
原因:同一个端口的进程没有kill掉
解决:① 打开cmd
② netstat -aon|findstr +端口号 查找pid
③ tasklist /fi “pid eq 276”,276是你在①中查到的pid号
④ taskkill /pid 276 /f,杀掉276的进程 // 或者打开任务管理器,杀死进程号=276的进程
具体图文参见:https://blog.csdn.net/sinat_19917631/article/details/70228718

18、vim翻页命令
整页翻页 ctrl-f ctrl-b
f就是forword b就是backward

翻半页
ctrl-d ctlr-u
d=down u=up

滚一行
ctrl-e ctrl-y

zz 让光标所杂的行居屏幕中央
zt 让光标所杂的行居屏幕最上一行 t=top
zb 让光标所杂的行居屏幕最下一行 b=bottom

19、Linux配置全局变量的两种方式:用户目录下.bashrc文件,VS,系统统一配置文件:/etc/profile
最后都需要 source .bashrc 或 source /etc/profile 重启
详情:https://blog.csdn.net/sun8112133/article/details/79901527

20、【哭哭,搞了这么久,就是environment参数没加对T T】

问题:
登陆服务器执行命令成功,采用supervisor执行同样命令、或用Python paramiko ssh链接服务器执行命令则报错:某.so文件找不到

原因:
之前怀疑是supervisor默认是root用户登陆(因为root用户和原用户登陆后的同路径python环境也有差异);
但我们的确在supervisor.conf中配置了user,也在paramiko连接种配置了相同的用户和密码,进程打印出来,也的确是原用户起的;
最后发现是环境变量不同,但不是由于用户不同导致的,是由于不同渠道执行命令导致的。

解决:
1) 执行命令前,先加载一次环境变量:
【paramiko】
stdin, stdout, stderr = ssh.exec_command('. ~/.bashrc;echo $PATH');stdin, stdout, stderr = ssh.exec_command('source ~/.bashrc;bash test.sh')
【supervisor】

法一: conf文件里:environment=XXXpath=“……”(XXXpath即为缺失文件的路径)
法二:在命令中添加引环境变量的命令:'. ~/.bashrc;echo $PATH'
2)使用bash执行命令:ssh.exec_command("bash -l -c 'some commands and some scripts...'")
bash -l -c解释:-l(login)表示bash作为一个login shell;-c(command)表示执行后面字符串内的命令,这样执行的脚本,可以获取到/etc/profile里的全局变量,包括我们搜索命令的目录PATH
主要是加上“-l”!!! —— 之前没加 -l , 直接用 bash -c +command 也一直报错
-l Make bash act as if it had been invoked as a login shell
-c If the -c option is present, then commands are read from string.
You're running the command passed to the -c argument.
-l makes it a login shell so bash first reads /etc/profile!!!

参考博文:
1)https://www.cnblogs.com/shengulong/p/7908940.html

paramiko获取远程主机环境变量.png
2)https://www.v2ex.com/t/400535
supervisor无法加载环境变量.png
3)https://www.jianshu.com/p/9f81b42fea2a

21、supervisor更改某项目配置后,需要重启才有效
1)更新配置到supervisord
supervisorctl update
2)重新启动配置中的所有程序
supervisorctl reload
3)启动某个进程(program_name=你配置中写的程序名称)
supervisorctl start program_name
4)查看正在守候的进程
supervisorctl
5)停止某个进程(program_name=你配置中写的程序名称)
pervisorctl stop program_name
6)重启某一进程(program_name=你配置中写的程序名称)
supervisorctl restart program_name
7)停止全部进程
supervisorctl stop all

你可能感兴趣的:(操作层——手残如我)