美文网首页
操作层——手残如我

操作层——手残如我

作者: Rainysong | 来源:发表于2018-06-26 11:46 被阅读0次

    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 root@192.168.120.204:/opt/soft/mongodb /opt/soft/

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

    拷贝文件

    scp /home/test/test.txt root@192.168.0.2:/home/test/

    拷贝目录

    scp -r /home/test/ root@192.168.0.2:/home/test/
    从远程复制到本地

    拷贝文件

    scp root@192.168.0.2:/home/test/ /home/test/test.txt

    拷贝目录

    scp -r root@192.168.0.2:/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

    相关文章

      网友评论

          本文标题:操作层——手残如我

          本文链接:https://www.haomeiwen.com/subject/ipbpyftx.html