Linux—性能:获取性能情况

uptimefreetop

原文:Exercise 28. Performance: getting performance stats, uptime, free, top

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

这个练习很简单。首先,我们需要什么样的性能数据?

  • CPU 使用情况:
    • 它的负载如何?
    • 哪些进程正在使用它?
  • 内存使用情况:
    • 使用了多少内存?
    • 多少内存是空闲的?
    • 多少内存用于缓存?
    • 哪些进程消耗了它?
  • 磁盘使用情况:
    • 执行多少输入/输出操作?
    • 由哪个进程?
  • 网络使用情况:
    • 传输了多少数据?
    • 由哪个进程?
  • 进程情况:
    • 有多少进程?
    • 他们在做什么 工作,还是等待什么?
    • 如果在等待什么,它是什么呢?CPU,磁盘,网络?

为了获取这些情况,我们可以使用以下工具:

  • uptime – 系统运行了多长时间。
  • free – 显示系统中可用和使用的内存量。
  • vmstat – 进程,内存,分页,块 IO,陷阱,磁盘和 cpu 活动的信息。
  • top – 实时显示 Linux 任务。

我们来看看这个程序及其输出。

uptime的输出:

user1@vm1:~$ uptime
#(1)      (2)                (3)                    (4)   (5)   (6)
 03:13:58 up 4 days, 22:45,  1 user,  load average: 0.00, 0.00, 0.00

字段和描述:

字段 描述
(1) 当前时间。
(2) 正常运行时间(启动后的时间)。
(3) 目前有多少用户登录。
(4) 过去 1 分钟的 CPU 负载。这不是规范化的,所以负载均值为 1 意味着单个 CPU 的满负载,但是在 4 个 CPU 的系统上,这意味着它有 75% 空闲时间。
(5) 过去 5 分钟的 CPU 负载。
(6) 过去 15 分钟的 CPU 负载。

free的输出:

user1@vm1:~$ free -mt
#            (1)         (2)        (3)         (4)        (5)        (6)
             total       used       free     shared    buffers     cached
Mem:           496        267        229          0         27        196
#                         (7)        (8)
-/+ buffers/cache:         43        453
# 9
Swap:          461          0        461
# 10
Total:         958        267        691

字段和描述:

字段 描述
(1) 物理内存总量。
(2) 使用的物理内存总量。
(3) 空闲的物理内存总量。
(4) 共享内存列应该被忽略;它已经过时了。
(5) 专用于缓存磁盘块的 RAM 和文件系统元数据总量。
(6) 专用于从文件读取的页面的 RAM 总量。
(7) 物理内存总量,不包括缓冲区和缓存,(2)-(5)-(6)
(8) 空闲的物理内存总量,包括空闲的缓冲区和缓存,(1)-(7)
(9) 交换文件使用信息。
(10) 总内存使用信息,包括交换内存

vmstat输出:

user1@vm1:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
#(1,2)  (3)    (4)    (5)   (6)    (7)   (8)   (9)  (10) (11) (12,13,14,15,16)
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0    229     27    196    0    0     0     0   11    6  0  0 100  0

user1@vm1:~$ vmstat -S M -a
#                    (17)    (18)
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa
 0  0      0     11    434     19    0    0    24     2   11    6  0  0 100  0

user1@vm1:~$ vmstat -d
#19    (20)    (21)    (22)    (23)  (24)    (25)    (26)    (27)   (28)    (29)
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sda    11706    353  402980   17612   9303  40546  336358   46980      0     19
sr0        0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0

user1@vm1:~$ vmstat -m | head
#(30)                       (31)  (32)   (33)   (34)
Cache                       Num  Total   Size  Pages
ext3_inode_cache          13700  13700    808     10
ext3_xattr                    0      0     88     46
journal_handle              170    170     24    170
journal_head                 37     72    112     36
revoke_table                256    256     16    256
revoke_record               128    128     32    128
kmalloc_dma-512               8      8    512      8
ip6_dst_cache                16     24    320     12
UDPLITEv6                     0      0   1024      8

字段和描述:

模式 情况 字段 描述
虚拟内存 进程 (1) r:等待运行的进程数。
(2) b:不间断睡眠中的进程数。
内存 (3) swpd:使用的虚拟内存量。
(4) free:空闲内存量。
(5) buff:用作缓冲区的内存量。
(6) cache:用作缓存的内存量。
(17) inact:非活动内存量。
(18) active:活动内存量。
交换 (7) si:从磁盘换入的内存量(/秒)。
(8) so:换出到磁盘的内存量(/秒)。
I/O (9) bi:从设备接收的块(块/秒)。
(10) bo:发送到设备的块(块/秒)。
系统 (11) in:每秒中断的次数,包括时钟。
(12) cs:每秒上下文切换的数量。
CPU (13) us:运行非内核代码的时间。(用户时间,包括优先的时间)
(14) sy:运行内核代码的时间。(系统时间)
(15) id:闲置时间。在 Linux 2.5.41 之前,这包括 IO 等待时间。
(16) wa:IO 等待时间。在 Linux 2.5.41 之前,包含在闲置时间中。
磁盘,-d 设备 (19) 设备名称
(20) total:成功完成的总读取数
(21) merge:分组的读取数(生成一个 I/O)
(22) sectors:成功读取的分区
(23) ms:用于读取的毫秒
(24) total:成功完成的总写入数
(25) merge:分组的写入数(生成一个 I/O)
(26) sectors:成功写入的分区
(27) ms:用于写入的毫秒
I/O (28) cur:正在进行中的 I/O
(29) s:用于 I/O 的秒数
Slab,-m Slab (30) 缓存:缓存名称
(31) num:当前活动对象的数量
(32) total:可用对象的总数
(33) size:每个对象的大小
(34) page:具有至少一个活动对象的页数

top的输出:

#     (1)      (2)                (3)      (4)
top - 03:22:44 up 4 days, 22:54,  1 user,  load average: 0.00, 0.00, 0.00
#        (5)         (6)         (7)            (8)          (9)
Tasks:  63 total,   1 running,  62 sleeping,   0 stopped,   0 zombie
#        (10)     (11)     (12)    (13)      (14)     (15)     (16)     (17)
Cpu(s):  0.0%us,  1.1%sy,  0.0%ni, 98.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
#                (18)            (19)            (20)            (21)
Mem:    508820k total,   273792k used,   235028k free,    27844k buffers
#                (22)            (23)            (24)            (25)
Swap:   473080k total,        0k used,   473080k free,   201252k cached

#(26) (27)     (28)(29) (30) (31) (32,33) (34)(35)      (36) (37)
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  8356  804  676 S  0.0  0.2   0:05.99 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.06 ksoftirqd/0
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0
    6 root      20   0     0    0    0 S  0.0  0.0   0:03.25 events/0
    7 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cpuset
<...>

字段和输出:

部分 字段 描述
正常运行时间 (1) 当前时间。
(2) 正常运行时间(启动后的时间)。
(3) 目前有多少用户登录。
(4) 过去 1,5 和 15 分钟内的 CPU 负载。这不是规范化的,所以负载均值为 1 意味着单个 CPU 的满负载,但是在 4 个 CPU 的系统上,这意味着它有 75% 空闲时间。
任务 (5) 运行进程总数。
(6) 当前正在执行的进程数。
(7) 当前正在睡眠的进程数。
(8) 被停止的进程数(例如使用CTRL + Z)。
(9) 已经停止(“僵尸”)的进程数量,已终止,但未由其父进程回收。
CPU(S) (10) CPU 运行不优先的用户进程的时间。
(11) CPU 运行内核及其进程的时间。
(12) CPU 运行优先的用户进程的时间。
(13) CPU 花费的空闲时间。
(14) CPU 等待 I/O 完成的时间。
(15) CPU 维护硬件中断的时间。
(16) CPU 维护软件中断的时间。
(17) 由管理程序从这个虚拟机“偷走”的 CPU 总量,用于其他任务(例如启动另一个虚拟机)。
内存/交换 (18) 物理内存总量。
(19) 使用的物理内存总量。
(20) 完全空闲的物理内存。
(21) 专用于缓存磁盘块的 RAM 和文件系统元数据总量。
(22,23,24) 总,使用和空闲交换内存。
(25) 专用于从文件读取的页面的 RAM 总量。
进程 (26) 任务的唯一进程 ID,它定期地包装,尽管从未重新启动。
(27) 任务所有者的有效用户名。
(28) 任务的优先级。
(29) 任务的优先值。负的优先值表示更高的优先级,而正的优先值表示较低的优先级。在这个字段中的零只是代表在确定任务的调度时不会调整优先级。
(30) 任务使用的虚拟内存总量。它包括所有代码,数据和共享库,以及已经被替换的页面。以及已被映射但未被使用的页面。
(31) 任务已使用的未交换的物理内存。
(32) 任务使用的共享内存量。它只是反映可能与其他进程共享的内存。
(33) 任务的状态可以是以下之一:D=不间断睡眠,R=运行,S=睡眠,T=跟踪或停止,Z=僵尸。
(34) 自上次屏幕更新以来,所经过的 CPU 时间的任务份额,以 CPU 时间总数的百分比表示。
(35) 任务当前使用的可用物理内存的份额。
(36) CPU 时间,单位是百分之一秒,与TIME相同,但通过百分之一秒反映更大的粒度。
(37) 命令 – 命令行或程序名称

你可能会看到很多字段。许多字段都存在于多个工具中,这些工具有些冗余的功能。通常情况下,你只需要这个字段的一小部分,但你需要知道,系统性能的许多信息(实际上还有更多)可用于你,因为有时候会出现一个模糊的问题,并且为了能够解决它,需要知道如何读取这些数据。

现在,你将学习如何使用系统性能工具。

这样做

 1: uptime
 2: free
 3: vmstat
 4: ( sleep 5 && dd if=/dev/urandom of=/dev/null bs=1M count=30 && sleep 5 && killall vmstat )& vmstat 1
 5: uptime
 6: ( sleep 5 && dd if=/dev/zero of=test.img bs=32 count=$((32*1024*200)) && sleep 5 && killall vmstat )& vmstat -nd 1 | egrep -v 'loop|sr0'
 7: echo 3 | sudo tee /proc/sys/vm/drop_caches
 8: free -mt ; find / >/dev/null 2>&1 ; free -mt
 9: echo 3 | sudo tee /proc/sys/vm/drop_caches
10: cat test.img /dev/null ; free -mt

你会看到什么

user1@vm1:~$ uptime
 05:36:45 up 6 days,  1:08,  1 user,  load average: 0.00, 0.00, 0.00
user1@vm1:~$ free
             total       used       free     shared    buffers     cached
Mem:        508820     239992     268828          0        820     213720
-/+ buffers/cache:      25452     483368
Swap:       473080          0     473080
user1@vm1:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0 268828    820 213720    0    0    21    10   14   11  0  0 100  0
user1@vm1:~$ ( sleep 5 && dd if=/dev/urandom of=/dev/null bs=1M count=30 && sleep 5 && killall vmstat )& vmstat 1
[1] 6078
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  1      0 268556    828 213736    0    0    21    10   14   11  0  0 100  0
 0  0      0 268556    828 213772    0    0    16     0   19   10  0  0 100  0
 0  0      0 268556    828 213772    0    0     0     0   13    8  0  0 100  0
 0  0      0 268556    828 213772    0    0     0     0   15   11  0  0 100  0
 0  0      0 268556    828 213772    0    0     0     0   14   10  0  0 100  0
 0  0      0 268556    828 213772    0    0     0     0   18   13  0  0 100  0
 1  0      0 267316    836 213844    0    0    74     0  267   26  0 99  1  0
 1  0      0 267316    836 213844    0    0     0     0  303    7  0 100  0  0
 1  0      0 267316    836 213844    0    0     0     0  271   11  0 100  0  0
 1  0      0 267316    836 213844    0    0     0     0  257   12  0 100  0  0
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 4.95038 s, 6.4 MB/s
 0  0      0 267928    860 213860    0    0    27     0  265   29  1 97  2  0
 0  0      0 267936    860 213848    0    0     0     0   15    9  0  0 100  0
 0  0      0 267936    860 213848    0    0     0     0   14    7  0  0 100  0
 0  0      0 267936    860 213848    0    0     0     0   14    7  0  0 100  0
 0  0      0 267936    860 213848    0    0     0     0   13   11  0  0 100  0
Terminated
user1@vm1:~$ uptime
 05:22:15 up 6 days, 54 min,  1 user,  load average: 0.07, 0.02, 0.00
[1]+  Done                    ( sleep 5 && dd if=/dev/urandom of=/dev/null bs=1M count=30 && sleep 5 && killall vmstat )
user1@vm1:~$ uptime
 05:22:22 up 6 days, 54 min,  1 user,  load average: 0.06, 0.02, 0.00
user1@vm1:~$ ( sleep 5 && dd if=/dev/zero of=test.img bs=32 count=$((32*1024*200)) && sleep 5 && killall vmstat )& vmstat -nd 1 | egrep -v 'loop|sr0'
[1] 6086
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
sda   146985 2230744 21821320  105848  32190 1343154 10927338 1330144      0    105
sda   146995 2230744 21821648  105848  32190 1343154 10927338 1330144      0    105
sda   146995 2230744 21821648  105848  32190 1343154 10927338 1330144      0    105
sda   146995 2230744 21821648  105848  32190 1343154 10927338 1330144      0    105
sda   146995 2230744 21821648  105848  32190 1343154 10927338 1330144      0    105
sda   146995 2230744 21821648  105848  32190 1343154 10927338 1330144      0    105
sda   146999 2230744 21821680  105856  32190 1343154 10927338 1330144      0    105
sda   146999 2230744 21821680  105856  32190 1343154 10927338 1330144      0    105
sda   147000 2230744 21821688  105856  32208 1344160 10935530 1330288      0    105
sda   147000 2230744 21821688  105856  32274 1349214 10976490 1330748      0    105
sda   147000 2230744 21821688  105856  32325 1353259 11009258 1331236      0    105
sda   147000 2230744 21821688  105856  32450 1364657 11101442 1337176      0    105
sda   147000 2230744 21821688  105856  32450 1364657 11101442 1337176      0    105
sda   147001 2230744 21821696  105856  32471 1366301 11114762 1337348      0    105
sda   147001 2230744 21821696  105856  32525 1370529 11149018 1337732      0    105
sda   147001 2230744 21821696  105856  32573 1374577 11181786 1338064      0    105
sda   147001 2230744 21821696  105856  32698 1386562 11278666 1346244      0    105
6553600+0 records in
6553600+0 records out
209715200 bytes (210 MB) copied, 11.7088 s, 17.9 MB/s
sda   147001 2230744 21821696  105856  32698 1386562 11278666 1346244      0    105
sda   147001 2230744 21821696  105856  32698 1386562 11278666 1346244      0    105
sda   147001 2230744 21821696  105856  32698 1386562 11278666 1346244      0    105
sda   147001 2230744 21821696  105856  32698 1386562 11278666 1346244      0    105
sda   147001 2230744 21821696  105856  32762 1393910 11337962 1349192      0    105
user1@vm1:~$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
[1]+  Done                    ( sleep 5 && dd if=/dev/zero of=test.img bs=32 count=$((32*1024*200)) && sleep 5 && killall vmstat )
user1@vm1:~$ free -mt ; find / >/dev/null 2>&1 ; free -mt
             total       used       free     shared    buffers     cached
Mem:           496         30        466          0          0          5
-/+ buffers/cache:         24        472
Swap:          461          0        461
Total:         958         30        928
             total       used       free     shared    buffers     cached
Mem:           496         64        432          0         22          6
-/+ buffers/cache:         35        461
Swap:          461          0        461
Total:         958         64        894
user1@vm1:~$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
user1@vm1:~$ cat test.img /dev/null ; free -mt
             total       used       free     shared    buffers     cached
Mem:           496        230        265          0          0        205
-/+ buffers/cache:         24        471
Swap:          461          0        461
Total:         958        230        727
user1@vm1:~$

解释

  1. 打印当前的正常运行时间。
  2. 打印出可用内存信息。
  3. 这个很有趣,最好认为是一种实验。首先,我们在后台启动( sleep 5 && dd if=/dev/urandom of=/dev/null bs=1M count=30 && sleep 5 && killall vmstat )&,之后我们 以连续模式启动vmstat,所以它将打印出其信息直到中断。我们可以看到,在这个命令启动 5 秒钟后,CPU 负载显着增加了一段时间,然后减少,另外 5 秒钟后vmstat被杀死。
  4. 打印当前的正常运行时间。注意负载平均值的变化。
  5. 这是另一个实验,几乎和以前一样,但这次用磁盘写入。
  6. 删除所有缓存和缓冲区。
  7. 另一个实验。我们想看看读取系统中的所有文件和目录名称,会如何影响内存中的文件系统缓存,并且我们可以看到它被缓存在缓冲区中,这是有理论根据的。
  8. 再次删除所有缓存和缓冲区。
  9. 这次我们想看看,文件读取如何影响内存中的文件系统缓存。我们可以看到读取的文件被缓存在缓存部分,来增加后续访问的时间。

附加题

  • 为什么在我们的第一个实验中,不是user,而是system CPU 使用率上升到 100?
  • 这是什么意思?dd if=/dev/zero of=test.img bs=32 count=$( (32*1024*200) )
  • 启动top,并按下h。现在尝试按照 CPU,内存和 PID 对其输出进行排序。

https://wizardforcel.gitbooks.io/llthw/content/ex28.html

Sony NW-A45

支援的格式

音樂

MP3(.mp3)

32 kbps – 320 kbps(支援變動位元速率(VBR))/ 32 kHz,44.1 kHz,48 kHz

WMA(.wma)

32 kbps – 192 kbps(支援變動位元速率(VBR))/ 44.1 kHz

FLAC(.flac)

16位元,24位元/ 8 kHz – 192 kHz

WAV(.wav)

16位元,24位元,32位元(浮動小數點/整數)/ 8 kHz – 192 kHz

AAC(.mp4,.m4a,.3gp)

16 kbps – 320 kbps / 8 kHz – 48 kHz

HE-AAC(.mp4,.m4a,.3gp)

32 kbps – 144 kbps / 8 kHz – 48 kHz

Apple Lossless(.mp4、.m4a)

16位元,24位元/ 8 kHz – 192 kHz

AIFF(.aif, .aiff, .afc, .aifc)

16位元,24位元,32位元(浮動小數點/整數)/ 8 kHz – 192 kHz

DSD(.dsf, .dff)

1位元/ 2.8224 MHz, 5.6448 MHz, 11.2896 MHz

*輸出轉換為線性PCM的音訊。

APE ( .ape)

8位元,16位元,24位元/ 8 kHz – 192 kHz(快速,一般,高)

MQA ( .mqa.flac)

支援

注意

  • 取樣頻率也許無法對應所有編碼器。
  • 有著作權保護的檔案不能播放。
  • 視取樣頻率而定,會包含非標準位元率或不保證能用的位元率。
  • 無法播放4 GB(APE則是2 GB)或更大的檔案。
  • 本產品會將超過CD品質(44.1 kHz/16位元量化)與DAT品質(48 kHz/16位元量化)的音源當成高解析度音訊。
    高解析度音訊來源會顯示“HR”符號。

使用frp实现内网穿透

frp,项目定义的 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议,在这里只是为了管理自己家中的一些设备,拿来做一些简单的tcp/udp穿透.。

frp分为服务端跟客户端两部分, 首先在一台有固定公网ip的机器上运行一个frps进程,最简单的配置文件即是默认的frps.ini:

[common]
bind_port = 7000

默认情况下,如果是直接运行frps不指定配置文件的话,就是起一个frps进程监听7000端口扥带连接。

还有一个关于是authentication timeout 的问题,就是客户端与服务端时间差过大(>15分钟)造成的,特殊情况下如果无法调整时间的话,可在frps配置文件中添加

authentication_timeout = 0

关闭时间差检测。

https://github.com/fatedier/frp#authentication

https://github.com/ioeory/frp/blob/master/README_zh.md#%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81

 

frps的其他配置:

 

在debian中安装resilio sync

一、添加官方提供给基于debian系的源,创建一个新文件(如/etc/apt/source.list.d/resilio-sync.list),或是直接写进去/etc/apt/source.list:

echo "deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free" | 
sudo tee /etc/apt/sources.list.d/resilio-sync.list

然后添加公钥:

wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | apt-key add -

curl -LO http://linux-packages.resilio.com/resilio-sync/key.asc && apt-key add ./key.asc

二、更新源并安装resilio sync:

apt-get update
apt-get install resilio-sync

三、systemd以当前用户身份启动resilio sync服务:

默认情况下,开启rslsync自启,将会以rslsync用户身份启动,这意味着同步文件的时候,该目录owner需为rslsync用户。

编辑 /usr/lib/systemd/user/resilio-sync.service ,把WantedBy=multi-user.target替换为WantedBy=default.target保存后,执行

systemctl --user enable resilio-sync

Ok,最后如果你想要外界能够通过web管理resilio sync ,需要把resilio sync的监听端口改成0.0.0.0或是特定的外部ip而非127.0.0.1,配置文件位于~/.config/resilio-sync/config.json 内容类似于:

{
    "storage_path" : "/home/ioe/.config/resilio-sync/storage",
    "pid_file" : "/home/ioe/.config/resilio-sync/sync.pid",

    "webui" :
    {
    "listen" :"194.48.62.48:8888"
    }
}

然后启动resilio sync:

systemctl --user start resilio-sync

 

 

linux中查找文件中相同文本

前几天有朋友问到我这问题,说是要对比两个文件中的数据,找出内容一样的。

看了一番,还是在linux下用fgrep最为简单:

fgrep -xf a.txt b.txt 

这样就可以了,若要把内容保存至新文件中:

fgrep -xf a.txt b.txt > c.txt

另grep用可以做到,用法:

grep -F -x -f a.txt b.txt

 

 

qedit.h (windows directshow dev)

vs编译时找不到qedit.h、streams.h, 安装windows sdk v6.1,在工程属性中编辑include目录,将windows sdk include和Samples\Multimedia\DirectShow\BaseClasses加入其中, 在include <qedit.h>前添加:

	#pragma include_alias( "dxtrans.h", "qedit.h" )
	#define __IDxtCompositor_INTERFACE_DEFINED__
	#define __IDxtAlphaSetter_INTERFACE_DEFINED__
	#define __IDxtJpeg_INTERFACE_DEFINED__
	#define __IDxtKey_INTERFACE_DEFINED__
	#pragma include_alias( "dxtrans.h", "qedit.h" )
	#define __IDxtCompositor_INTERFACE_DEFINED__
	#define __IDxtAlphaSetter_INTERFACE_DEFINED__
	#define __IDxtJpeg_INTERFACE_DEFINED__
	#define __IDxtKey_INTERFACE_DEFINED__

PyQt5 Anaconda3 Eric6开发环境

首先下载anaconda3并安装,如果在此之前安装了其他python解析器,先将他们卸载。

Downloads

anaconda安装完之后,打开Anaconda Prompt,安装qscintilla(eric6需求):

pip install qscintilla

 

中间如出现权限问题而无法安装qscintilla,检查一下是否有其他python进程在运行,终止所有python进程后重试。

在安装完anaconda和qscintilla之后,就可以开始eric6了,打开解压后的eric6目录中install.py开始安装eric6 ide。

https://eric-ide.python-projects.org/eric-download.html

eric6中打开qtdesigner文件是提示无法找到qtdesigner的问题, 打开anaconda promot,安装pyqt5-tools:

pip install pyqt5-tools

 

在控制台中重置OpenMediaVault webui管理员密码

通过ssh登录在openmediavault所在的服务器上,运行omv-firstaid,选中第三项 Change control panel administrator password,然后输入两次密码即可。还有如果你的账号因多次登录失败,有可能被禁用状态,也可以通过omv-firstaid来重置(reset failed login attemp counter)

Linux中ipv4优先

默认不修改情况下,如linux主机中有ipv6地址, 会优先走ipv6通道,例如debian的源dns解析会默认返回AAAA记录(ipv6),要使用ipv4 连接优先而不必禁用ipv6,需要修改gai.conf配置文件使其生效。

debian系:修改/etc/gai.conf,取消下面这一行的注释

precedence ::ffff:0:0/96  100

redhat系:修改/etc/gai.conf,添加如下内容

label       ::1/128        0
label       ::/0           1
label       2002::/16      2
label       ::/96          3
label       ::ffff:0:0/96  4
precedence  ::1/128        50
precedence  ::/0           40
precedence  2002::/16      30
precedence  ::/96          20
precedence  ::ffff:0:0/96  100

 

使用rutorrent插件httprpc远程控制rtorrent

rutorrent是一款不错的rtorrent web前端,但是手机上管理的使用由于屏幕太小显得有些不便, 在android上可通过transdrone来使用httprpc来控制,完成基本的种子添加移除之类的操作。

通常情况httptpc插件目录位于web根目录下/rutorrent/plusgins/httprpc,在android上打开transdrone, 添加一个远程服务器:

选择Add normal , custom server
Server Type 选择rtorrent
IP or host name 填写自己的服务商ip或域名,以及设定好的Username和password。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最关键的地方, 在Advanced settings中scgi mount point将httprpc信息写入:/rutorrent/plugins/httprpc/action.php。
如果使用了https链接,再把Use SSL 选中,及Accept all SSL certificates。