Linux后台命令的使用說明


1)ctrl+Z:停止當前進程

首先先將一個程序運行起來,這個時候如果你需要去干別的事情,需要暫停運行,可以使用ctrl+Z:

user@mine:/opt/user/pytorch-gender$ python train_debug.py --debugFile=./debug
{'debugFile': './debug'}
Epoch 0/199
----------
^Z
[1]+  Stopped                 python train_debug.py --debugFile=./debug 

從上面可以看見,這個程序已經已經停止了,狀態為Stopped

 

2)jobs:用於查看正在運行的命令

user@mine:/opt/user/pytorch-gender$ jobs
[1]+  Stopped                 python train_debug.py --debugFile=./debug 

前面的編號[1]是命令編號

 

3)bg 命令編號:把程序調度到后台執行:

user@mine:/opt/user/pytorch-gender$ bg 1
[1]+ python train_debug.py --debugFile=./debug &
user@mine:/opt/user/pytorch-gender$ jobs
[1]+  Running                 python train_debug.py --debugFile=./debug & 

然后我們可以看見該命令在后台運行起來了,狀態為Running,命令后的&標志就是把命令放在后台運行的意思

這個時候該命令生成的返回信息會自己打印出來:

user@mine:/opt/user/pytorch-gender$ train Loss: 0.4611 Acc: 0.7824
val Loss: 0.1882 Acc: 0.9340
Epoch 1/199
----------

user@mine:/opt/user/pytorch-gender$ train Loss: 0.3271 Acc: 0.8578
val Loss: 0.1845 Acc: 0.9260
Epoch 2/199
---------- 

不影響你運行其他的命令,你就輸入你的命令回車即可

 當然,如果你不想讓輸出顯示在控制台中,那就在運行時指明將輸出信息寫入日志文件:

user@mine:/opt/user/pytorch-gender$ python train_debug.py --debugFile=./debug >> gender_log_debug_1.out 

打開另一個窗口查看日志文件為:

user@mine:/opt/user/pytorch-gender$ cat gender_log_debug_1.out
{'debugFile': './debug'}
Epoch 0/199
---------- 

然后這個時候如果你想進行調試,即pytorch Debug —交互式調試工具Pdb (ipdb是增強版的pdb)-1-在pytorch中使用,那么你在本地生成文件夾debug后,再查看日志文件變為:

user@mine:/opt/user/pytorch-gender$ cat gender_log_debug_1.out
{'debugFile': './debug'}
Epoch 0/199
----------
train Loss: 0.4507 Acc: 0.7919
val Loss: 0.1578 Acc: 0.9420
Epoch 1/199
----------
train Loss: 0.3201 Acc: 0.8576
val Loss: 0.1069 Acc: 0.9540
Epoch 2/199
----------
--Call--
> /home/mine/anaconda3/lib/python3.6/site-packages/torch/autograd/grad_mode.py(129)__exit__()
    128
--> 129     def __exit__(self, *args):
    130         torch.set_grad_enabled(self.prev)

ipdb> user@mine:/opt/user/pytorch-gender$ 

這時候你在命令端輸入調試命令u:

user@mine:/opt/user/pytorch-gender$ python train_debug.py --debugFile=./debug >> gender_log_debug_1.out
u

可見日志文件中變為:

user@mine:/opt/user/pytorch-gender$ cat gender_log_debug_1.out
{'debugFile': './debug'}
Epoch 0/199
----------
train Loss: 0.4507 Acc: 0.7919
val Loss: 0.1578 Acc: 0.9420
Epoch 1/199
----------
train Loss: 0.3201 Acc: 0.8576
val Loss: 0.1069 Acc: 0.9540
Epoch 2/199
----------
--Call--
> /home/mine/anaconda3/lib/python3.6/site-packages/torch/autograd/grad_mode.py(129)__exit__()
    128
--> 129     def __exit__(self, *args):
    130         torch.set_grad_enabled(self.prev)

ipdb> > /opt/user/pytorch-gender/train_debug.py(151)train_model()
    150                             import ipdb;
--> 151                             ipdb.set_trace()
    152

ipdb> 

如果調用l 123命令:

user@mine:/opt/user/pytorch-gender$ python train_debug.py --debugFile=./debug >> gender_log_debug_1.out
u
l 123

可見日志文件又變為:

user@mine:/opt/user/pytorch-gender$ cat gender_log_debug_1.out
{'debugFile': './debug'}
Epoch 0/199
----------
train Loss: 0.4507 Acc: 0.7919
val Loss: 0.1578 Acc: 0.9420
Epoch 1/199
----------
train Loss: 0.3201 Acc: 0.8576
val Loss: 0.1069 Acc: 0.9540
Epoch 2/199
----------
--Call--
> /home/mine/anaconda3/lib/python3.6/site-packages/torch/autograd/grad_mode.py(129)__exit__()
    128
--> 129     def __exit__(self, *args):
    130         torch.set_grad_enabled(self.prev)

ipdb> > /opt/user/pytorch-gender/train_debug.py(151)train_model()
    150                             import ipdb;
--> 151                             ipdb.set_trace()
    152

ipdb>     118                 labels = labels.to(device)  # 當前批次的標簽輸入
    119                 # print('input : ', inputs)
    120                 # print('labels : ', labels)
    121
    122                 # 將梯度參數歸0
    123                 optimizer.zero_grad()
    124
    125                 # 前向計算
    126                 # track history if only in train
    127                 with torch.set_grad_enabled(phase == 'train'):
    128                     # 相應輸入對應的輸出

ipdb> 

所以輸出和命令輸入雖然不在一起,但是並不妨礙功能的實現

 

4)fg 命令編號:將后台命令調到前台運行

如果我想要對上面的命令進行調試,我就需要將其調到前台,然后再進行調試

user@mine:/opt/user/pytorch-gender$ fg 1
python train_debug.py --debugFile=./debug
train Loss: 0.2337 Acc: 0.9059
val Loss: 0.1347 Acc: 0.9400
Epoch 4/199
----------
train Loss: 0.2040 Acc: 0.9141
val Loss: 0.0962 Acc: 0.9640
Epoch 5/199
----------
train Loss: 0.1984 Acc: 0.9182
val Loss: 0.0825 Acc: 0.9720
Epoch 6/199
----------
train Loss: 0.1841 Acc: 0.9218
val Loss: 0.1059 Acc: 0.9640
Epoch 7/199
----------
train Loss: 0.1868 Acc: 0.9215
val Loss: 0.0668 Acc: 0.9740
Epoch 8/199
----------
train Loss: 0.1782 Acc: 0.9273
val Loss: 0.0735 Acc: 0.9740
Epoch 9/199
----------
train Loss: 0.1703 Acc: 0.9291
val Loss: 0.0850 Acc: 0.9680
Epoch 10/199
----------
train Loss: 0.1596 Acc: 0.9329
val Loss: 0.1114 Acc: 0.9560
Epoch 11/199
----------
--Call--
> /home/mine/anaconda3/lib/python3.6/site-packages/torch/autograd/grad_mode.py(129)__exit__()
    128
--> 129     def __exit__(self, *args):
    130         torch.set_grad_enabled(self.prev)

ipdb>                                  

 

5)nohup 命令 & :直接將命令放在后台運行

nohup python train_debug.py --debugFile=./debug &

如果要指定返回信息寫入的日志文件log.out:

nohup python train_debug.py --debugFile=./debug >> log.out &

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM