linux 下重定向的注意事项
This_is_Y Lv6

1

​ 重定向输出通常使用>>>

  • > 覆盖
  • >> 追加

2

​ 在linux的重定向中: 0 1 2代表着不同的涵义。

  • 0表示标准输入。

  • 1标准输出。

  • 2标准错误信息输出。

    通过指明0/1/2来指定需要重定向内容是标准输入/标准输出/标准错误信息输出。默认重定向的内容是1(标准输出)。

3

某些快捷键

  • ctrl + z
    可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

  • Ctrl+c
    终止前台命令。

4

& 和 nohup

  • &

    在命令后面加上& 实现后台运行,把当前控制台关掉(退出帐户时),作业就会停止运行。

  • nohup

    ( no hang up) 在命令前加上nohup实现后台运行,退出帐户之后继续运行相应的进程,非正常退出会导致结束,需要使用exit

  • jobs

    可以查看当前在后台的进程,配合使用kill %num 可以中止选择的进程

5 实例python代码

1.py

1
2
3
4
import time
for i in range(1000):
time.sleep(1)
print(i)

普通的挂在后台

  • python 1.py &

虽然这时候可以自己输入命令,但是该进程的输出会一直跑出来

image-20220423130621470

所以需要把输出重定向到文件中。但是如果👇这样子写的话,在程序跑完前,在1.out输出文件中是不会有任何东西的

  • python 1.py > 1.out &

所以需要加上 -u 参数

  • python -u 1.py > 1.out &

这样子就可以进程的输出就会实时更新在1.out文件里了

2.py

然后来看第二个例子

1
2
3
4
5
6
import time
for i in range(1000):
time.sleep(1)
print(i)
if i == 4:
print(j)

我在代码里留了一个报错,使用之前的命令

  • python -u 2.py > 2.out &

可以看到程序在运行几秒后就报错了

image-20220423131458093

如果想把报错信息也重定向到文件中,就需要这样子写命令

  • python -u 2.py > 2.out 2>&1 &

    2>&1,意思时将标准错误重定向至标准输出

image-20220423131720672

  • python -u 2.py >> 2.out 2>&1 &

如果使用>>就会追加新的输出到文件中

image-20220423131948764

 Comments