进程管理

后台运行

命令:nohup python -u test.py > out.log 2>&1 &
参数解释:
(1)1是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符

  • 1> python.log 简化为 > python.log,表示把标准输出重定向到python.log这个文件
  • 2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出

为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。这就会导致 commond > python.log 2> python.log,文件python.log被两次打开,而STDOUT和STDERR将会竞争覆盖,这肯定不是我门想要的
(2)由于python的输出有缓冲,导致python.log3并不能够马上看到输出。使用-u参数,使得python不启用缓冲。

小技巧: > 表示覆盖式写入,而 >> 表示追加式写入。(故可以使用 >> out.log 来实现追加式写入)

SCP

  1. 1. 把当前服务器文件copy到远程服务器:
  2. # scp /home/softwares/a.txt root@[远程主机IP]:/home/softwares
  3. 2. copy远程主机文件到本机:
  4. # scp root@[远程主机IP]:/home/a.txt /home/softwares
  5. (2) copy文件夹:
  6. # scp -r root@[远程主机IP]:/home/a.txt /home/softwares
  7. (3) 若非22端口(注意-P大写):
  8. # scp -P 端口号 -r root@104.128.xx.xx:/home/softwares/folder ./

批量操作

批量重命名文件

  1. # 一层目录下的单个文件重命名
  2. rename old_match new_match where
  3. 如:rename pub1 pub *
  4. # 递归重命名
  5. find -type f | grep 'foo' | xargs rename old_match new_match
  6. # find -type f 查找所有文件
  7. # grep 'foo' 过滤出名字中包含foo的文件
  8. # xargs 的作用是将前面命令的执行结果作为下面命令的输入

批量zip压缩文件夹

  1. #! /bin/sh
  2. for i in `find ./* -type d`;
  3. do
  4. zip general_$i_300.zip ./$i/*;
  5. done