0%

Linux入门命令汇总

从2021年8月19日开始分享以前陆陆续续汇总的一些小技巧,截止到今天(2021年11月29)为止,100天,100个技巧。

Bingo,第一个小汇总顺利完成。

从发送的顺序上来看,100个命令的链接如下所示,PDF汇总文件根据这个顺序,或者字母表顺序,或者分类顺序来进行阅读。具体参考公众号商店

  1. ls
  2. cd
  3. cat
  4. file
  5. less
  6. more
  7. whatis
  8. apropos
  9. man
  10. mkdir
  11. cp
  12. mv
  13. rm
  14. rmdir
  15. df
  16. du
  17. pwd
  18. ln
  19. chmod
  20. chown
  21. su
  22. sudo
  23. tail
  24. head
  25. free
  26. touch
  27. stat
  28. ping
  29. ifconfig
  30. ip
  31. wall
  32. write
  33. tracepath
  34. date
  35. useradd
  36. userdel
  37. passwd
  38. tty
  39. uname
  40. whoami
  41. who
  42. w
  43. id
  44. top
  45. dd
  46. echo
  47. kill
  48. wget
  49. ps
  50. wc
  51. last
  52. time
  53. find
  54. scp
  55. rsync
  56. grep
  57. uniq
  58. sort
  59. which
  60. tar
  61. history
  62. alias
  63. diff
  64. curl
  65. usermod
  66. cal
  67. sleep
  68. nice–
  69. halt–
  70. login–
  71. logname—
  72. logout–
  73. reboot–
  74. arp–
  75. xargs–
  76. telnet—
  77. netconfig–
  78. nc—
  79. minicom—
  80. mesg—
  81. netstat—
  82. talk—
  83. traceroute—
  84. write—
  85. tcpdump—
  86. chgrp—
  87. split—
  88. join–
  89. whereis—
  90. get–
  91. mcopy—
  92. ftp—
  93. fsck–
  94. hdparm–
  95. mkfs.xfs—
  96. sync–
  97. fdisk–
  98. exit–
  99. finger–
  100. suspend–
  101. groupdel–
  102. groupmod–
  103. rsh–
  104. rlogin–
  105. pstree–
  106. screen–
  107. chsh—-
  108. whois—
  109. skill—
  110. groupadd—
  111. reset–
  112. clear–
  113. bind–
  114. chroot–
  115. clock–
  116. dmesg—
  117. export—
  118. rpm—
  119. set—
  120. resize—
  121. setenv—
  122. ulimit—
  123. chkconfig—
  124. unalias—
  125. ar—
  126. dump–
  127. gzip–
  128. zip—

而从分类来讲,主要包括了大概N个类别

文件管理类

  1. ls
  2. cat
  3. file
  4. less
  5. more
  6. tail
  7. pwd
  8. echo
  9. ln
  10. chmod
  11. chown
  12. chgrp—
  13. split—

时间

  1. date
  2. cal

磁盘管理类

  1. cd
  2. df
  3. du
  4. mkdir
  5. rmdir
  6. pwd
  7. stat
  8. find

文档编辑类

  1. grep
  2. join–
  3. sort
  4. wc
  5. uniq
  6. diff

帮助类

  1. whatis
  2. apropos
  3. man
  4. which
  5. whereis

文件传输类

  1. cp
  2. mv
  3. scp
  4. rsync
  5. rcp—
  6. mcopy—
  7. ftp—
  8. tftp—
  9. ncftp—
  10. ftpshut—
  11. ftpwho–

磁盘维护类

  1. dd
  2. fsck–
  3. hdparm–
  4. mkfs.xfs—
  5. sync–
  6. fdisk–

文件传输

  1. wget
  2. curl

网络通信类

  1. telnet—
  2. netconfig–
  3. nc—
  4. ifconfig
  5. ip
  6. minicom—
  7. wall
  8. netstat—
  9. ping
  10. talk—
  11. traceroute—
  12. tty—
  13. write
  14. tcpdump—

系统管理类

  1. adduser–
  2. useradd
  3. exit–
  4. finger–
  5. sleep
  6. suspend–
  7. groupdel–
  8. groupmod–
  9. kill
  10. last
  11. halt–
  12. login–
  13. logname—
  14. logout–
  15. ps
  16. nice–
  17. top
  18. reboot–
  19. rsh–
  20. rlogin–
  21. pstree–
  22. screen–
  23. shutdown–
  24. sudo
  25. uname
  26. chsh—
  27. userdel
  28. usermod
  29. who
  30. whoami
  31. whois—
  32. su
  33. skill—
  34. w
  35. id
  36. groupadd—
  37. free

系统设置类

  1. reset–
  2. clear–
  3. alias
  4. bind–
  5. chroot–
  6. clock–
  7. crontab–
  8. dmesg—
  9. export—
  10. rpm—
  11. insmod—
  12. lsmod—
  13. set—
  14. passwd
  15. resize—
  16. rmmod—
  17. modinfo—
  18. time—
  19. setup—
  20. setenv—
  21. ulimit—
  22. chkconfig—
  23. hwclock—
  24. unalias—

压缩备份类

  1. ar
  2. cpio–
  3. dump–
  4. gzip–
  5. tar
  6. zip—

炫技类

  1. awk–
  2. xargs–

其他

  1. history

危险命令

  • rm
  • chmod
  • chown

Windows下访问wsl的数据

有些人感受到的是雨,而很多人感受到的只有淋湿。

Windows下的wsl说实话还是挺不错的,对于开发而言,效果相当的可以。

比如在某个文件夹,Windows编辑好代码后,直接右键打开wsl,就可以进行编译,而不用把代码再同步到开发环境了。

不过如果直接任务栏打开的wsl,有了一些处理数据,该怎么来共享呢,可以通过文件管理器来访问:

  1. 在地址栏中输入\\wsl$,然后按回车键。这将打开一个显示WSL可用发行版的窗口。
  2. 找到并点击进入你想要访问的WSL发行版,例如Ubuntu2204。
  3. 在打开的发行版文件资源管理器窗口中,你可以看到类似于Linux文件系统的目录结构。转到/home目录,那里包含了WSL发行版中用户的home目录。
  4. 在/home目录下,你可以找到对应于WSL用户的文件夹,例如/home/username

从一个共同的源代码构建多个版本

脚本 install-difx 现在允许从 Git 源代码树之外的目录层次结构构建和安装 DiFX。
例如,如果您需要为多个架构编译 DiFX,您可以为每个架构拥有独立的构建和根目录。

步骤如下:

  1. 运行 git pull 以使您的源代码保持最新(或不更新)
  2. 如以前一样准备并 source 一个设置脚本
  3. 在某个地方创建一个构建目录
  4. 在这个构建目录中运行 /fullpathto/install-difx`

如果你以前(大多数开发者都是这样)在源码目录中构建,第一个配置过程会抱怨“源已经配置好了,运行 make distclean”并停止。
(这是一个功能,旨在防止您意外地将一个架构的构建错误地配置为另一个架构。)
由于 DiFX 项目有多个子目录,修复这个问题可能会很繁琐,因此有一个选项(--pristine)可以为您完成这项工作。
install-difx 有很多选项;使用 --help 查看简要说明。

安装示例

你可能计划将根目录、源目录和构建目录都放在某个父目录中,例如 $DIFXROOT$DIFXROOT/../difx-src$DIFXROOT/../difx-build
因此,首先我们要更新源代码并检查我们的修改:

1
2
3
4
$ source setup-difx.bash
$ cd $DIFXROOT/../difx-src
$ git pull
$ git log

然后我们创建一个构建目录。install-difx 在其中的一个目录(pkgconfig)中添加了一个目录,以便您可以在那里放置自定义的 pkg-config 文件,以便处理一些特殊情况(例如 IPP):

1
2
3
4
5
6
7
$ cd $DIFXROOT/..
$ mkdir difx-build
$ cd difx-build
$ mkdir pkgconfig
$ cd pkgconfig
$ $DIFXROOT/../difx-svn/setup/genipppc $IPPROOT
$ cd ..

If you have previously been building in the SVN directory, you will need
to remove some configuration files (e.g. config.status) left over
from your last install with
如果你以前在源码目录中构建过,你需要删除一些配置文件(例如 config.status):

1
$ $DIFXROOT/../difx-svn/setup/install-difx --pristine

有一些独立的包在 DiFX 项目中,每个包都需要系统配置。如果你经常重建代码,install-difx 可以创建一个缓存来加快这个配置过程:

$DIFXROOT/../difx-svn/setup/install-difx -v --cache=difx-config-cache

其中 -v 参数提供了一些额外的诊断信息,说明正在创建或遍历哪些目录。

一旦构建完成(你会看到 "Done!"),你可以删除构建目录。或者你可以留下它,以备下次 git pull 和构建循环。install-difx 的另一个有用的选项是 --targ 选项,它允许你将某些目标传递给树中的所有 make 步骤。例如:

$DIFXROOT/../difx-svn/setup/install-difx -v --targ='-n'

将遍历 DiFX 构建层次结构,并告诉你它将构建什么。 (即在每个 Makefile 中调用 make -n。)

复数采样数据的限制和解决方法

目前的vex 1.5标准只能传输有关复杂采样信号性质的有限信息,因此在某些情况下,必须修改v2d和vex文件以正确表征信号。

值得注意的是,这意味着vex文件中**$FREQ**标题下给出的采样率必须始终是带宽的两倍,即使对于复杂的采样天线也是如此。

因此,为了正确地表示一个复杂的采样信号,在vex文件中指定的采样率必须是复杂数据采样率的两倍。
这意味着采样率增加2倍是错误的,但这是由FFT中的样本数量也被调整为2倍来补偿的。

$FREQ;
*
def 2400.00MHz1x4MHz;
* mode = 1 stations =T1:T2
sample_rate =      128.0 Ms/sec;
chan_def = :   200.00 MHz   :   U   :  64.00 MHz   :   &CH01   :   &BBC01   :   &NoCal ;   *Rcp
enddef;

台站T1T2以64 Ms / sec的采样率进行复杂采样,但是在vex文件中以128 Ms / sec定义它们,以进行上述解决方法。 要告诉vex2difx数据是复杂采样的,还必须修改v2d文件以反映采样是复杂的:

ANTENNA T1 {
sampling = COMPLEX
             .
             .
}
ANTENNA T2 {
sampling = COMPLEX
             .
           .
}

一个告诉vex2difx数据是复杂采样的替代方法,特别是在vex文件的$ TRACKS部分中显示:

$TRACKS;
def VDIF.1Ch2bit;
   track_frame_format = VDIFC/32032/2;
             .
             .
enddef;

在上面的示例中,VDIFC表示VDIF数据是复杂的,并且处于“单边带”模式。 对于“双边带”模式的复杂VDIF数据,需要VDIFD。 32032表示帧大小,2表示位深度。 请注意,对于具有实际Mark5B格式的台站时间表的vex文件,DiFX附带的perl脚本“ addVDIF.pl”会更改设置为VDIF,并包括一个复杂的选项以及帧大小和位深度的设置,这些设置会导致上面给出的track_frame_format行。

DiFX Debian 安装包依赖

必装软件

1
$ apt-get install pkg-config g++ gfortran bison flex libexpat1-dev fftw3-dev autoconf automake libtool build-essential pgplot5 subversion libgsl-dev

Etch 发行版

1
$ apt-get install openmpi-dev

Lenny及以后的发行版

1
$ apt-get install libopenmpi-dev openmpi-bin

HOPS

如果使用Hops,您可能还需要安装

1
$ apt-get install libx11-dev libpng12-0 libpng12-dev

如果需要使用Espresso,还需要安装mxdatetime:

1
$ apt-get install python-egenix-mxdatetime

DiFX Fedora 安装包依赖

Fedora core 8

对于Fedora core 8,您需要安装以下软件包:

1
$ yum install fuse fuse-libs fuse-devel gcc gcc-c++ gcc-gfortran fftw fftw-devel openmpi openmpi-devel expat-devel flex flex-devel bison gsl gsl-devel valgrind

对于Fedora Core 29,您需要安装以下软件包:

1
$ sudo dnf install libtirpc

DiFX Max OSX 安装包依赖

DiFX编译和运行,但尚未经过广泛测试。必须安装Xcode。推荐使用“Brew”来满足外部依赖。具体安装:

1
$ brew install openmpi gcc fftw libtool pkg-config automake autoconf gawk pgplot bison

从Mojave开始,Apple似乎对规范的类Unix操作系统不太感兴趣。现在的Xcode安装过程是(全部作为root或sudo):

从Apple商店下载Xcode

1
2
3
xcode-select --install
xcodebuild -license
installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

最后一步是让/usr/include出现。显然,它现在被埋在SDK的某个地方,您可以通过以下命令查看:

xcrun --show-sdk-path

OSX附带了一个非常旧的bison版本,无法编译vex解析。Brew也拒绝以覆盖系统默认方式安装。所以你还需要

export PATH="/usr/local/opt/bison/bin:$PATH"

DiFX Ubuntu 安装包依赖

Hardy

Lucid

1
$ sudo apt-get install build-essential pkg-config bison flex libfftw3-dev libopenmpi-dev openmpi-bin automake gfortran libexpat1-dev

Natty & Precise (12.04)

1
$ sudo apt-get install build-essential pkg-config bison flex libfftw3-dev libopenmpi-dev openmpi-bin automake gfortran libexpat1-dev subversion libtool

可选的用于构建文档

1
$ sudo apt-get install doxygen

14.04 LTS Trusty Tahr & 16.04 LTS

1
$ sudo apt-get install build-essential subversion libopenmpi-dev libfftw3-dev libtool bison flex pkg-config automake autoconf libexpat1-dev gfortran openmpi-bin Xorg-dev rpcbind python

Note:

  1. 对于OpenMPI: libopenmpi-dev openmpi-bin

(for 16.04 LTS)

1
$ sudo apt-get install openmpi-common openssh-client openssh-server libopenmpi1.10
  1. 对于fftw: libfftw3-dev

sudo apt-get install libfftw*

  1. 对于PGPLOT: gfortran Xorg-dev

安装portmap以在16.04 LTS中激活calcserver,请安装以下软件包:

sudo apt-get install nfs-kernel-server rpcbind nfs-common

18.04 LTS bionic, 19.04 Disco Dingo, 20.04 Focal Fossa

1
$ sudo apt-get install subversion build-essential python autotools-dev autoconf libtool libfftw3-dev pkg-config libexpat1-dev openmpi-bin libgsl-dev bison flex-old

DiFX 示例教程

一些基础要求

需要掌握一些基础的 Linux / Unix 和 bash shell的内容。

另外一些基本的文本编辑知识也很必要,比如使用vim来编辑文件。

在演示中使用的程序基本都具有内置的帮助信息,可以通过在命令行中使用 -h 选项运行来访问。 例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
$ vex2difx -h

vex2difx version 3.1.0 Walter Brisken/Adam Deller 20221115

Usage: vex2difx [<options>] <v2d file>

<options> can include:
-h
--help display this information and quit.

-v
--verbose increase the verbosity of the output; -v -v for more.

-o
--output create a v2d file with all defaults populated.

-d
--delete-old delete all job(s) in this series before running.

-f
--force continue desipte warnings.

-s
--strict treat some warnings as errors and quit [default].

-6
--mk6 call mk62v2d utility to generate mark6 related files

<v2d file> is the vex2difx configuration file to process.

$ difx2fits -h
difx2fits ver. 3.8.0 Walter Brisken <wbrisken@nrao.edu>

A program to convert DiFX format data to FITS-IDI

Usage : difx2fits [options] <baseFilename1> [<baseFilename2> ... ] [<outfile>]

It assumed that SWIN format visibility file(s) to be converted live
in directory <baseFilename>.difx/
It is also assumed that at least 3 additional files exist:
<baseFilename>.input DiFX input file
<baseFilename>.calc Base file for calcif
<baseFilename>.im Polynomial UVW and model
One other files is optionally read:
<baseFilename>.flag Antenna-based flagging

VLBA calibration transfer will produce 4 files:
flag, tsys, pcal, weather
If these are present in the current directory, they will be used to
form the FL, TS, PH and WR tables

If env variable GAIN_CURVE_PATH is set, gain curves will be looked for
and turned into a GN table

The output file <outfile> will be written in FITS-IDI format nearly
identical to that made at the VLBA HW correlator. The first two optional
files are required for full model accountability.

options can include:
--help
-h Print this help message

--bin <bin>
-B <bin> Select on this pulsar bin number

--difx
-d Run on all .difx files in directory

--no-model
-n Don't write model (ML) table

--dont-combine
-1 Don't combine jobs

--scale <scale>
-s <scale> Scale visibility data by <scale>

--deltat <deltat>
-t <deltat> Set interval (sec) in printing job matrix (default 20.0)

--difx-tsys-interval
-i <interval> Set the Difx-derived tsys interval (sec) (default 30.0)

--difx-pcal-interval
<interval> Set the Difx-derived pcal interval (sec) (default 30.0), 0 means to average over a whole scan

--phaseCentre <p>
--phasecenter <p> Create a fits file for all the <p>th phase centres (default 0)

--keep-order
-k Keep antenna order

--ac-always
-a Write standard autocorrelations into every output file

--profilemode Don't discard autocorrelations for pulsar bins other than bin 0

--skip-extra-autocorrs
Ignore e.g. LL autocorrs in a job with only RR cross-corrs

--history <file>
-H <file> Read file <file> and populate FITS History

--sniff-all
-S Sniff all bins and centers

--dont-sniff
-x Don't produce sniffer output

--sniff-time <t>
-T <t> Sniff output on a <t> second timescale (default 30.0)
Set to zero to disable sniffing

--union
-u Form union of frequency setups

--max-jobs <max>
-m <max> Set maximum number of jobs to merge into one FITS file to <max>

--eop-merge-mode Set the mode for merging differerent EOPs. Legal modes are strict (default), drop, relaxed.

--clock-merge-mode Set the mode for merging clock entries of an antenna. Legal modes are strict (default), drop (ignore clock breaks).

--verbose
-v Be verbose. -v -v for more!

--override-version Ignore difx versions

--zero
-0 Don't put visibility data in FITS file

--antpol Use antenna-based polarization codes. Warning: fits-idi file will violate original specifcaitions and abide extended specifications.

--polxy2hv Convert XY polarziation codes to HV codes. Requires --antpol option

--localdir
-l *.calc, *.im, and *.difx are sought in the same directory as *.input files

--all-pcal-tones
-A Extract all phase calibration tones

--primary-band <pb> Add PRIBAND keyword with value <pb> to FITS file

--relabelCircular Change naming of all polarizations to R/L

--vanVleck Force difx2fits to apply van Vleck correction

--bandpass Write baseline-based bandpass to .bandpass file

--applybandpass <file>
Read <file> and apply it as a bandpass to the output
--applydelaycal <file>
Read <file> and apply it as delay corrections to the output
--sourcelist <list>
Only propagate source(s) listed (comma separated)
difx2fits responds to the following environment variables:
DIFX_GROUP_ID If set, run with umask(2).
DIFX_VERSION The DiFX version to report.
DIFX_LABEL Your local DiFX version label.
GAIN_CURVE_PATH Path where gain curves can be found.
TCAL_PATH Path where switched power T_cal values are found.
TCAL_FILE Path to single specific T_cal file.
DIFX_MAX_SNIFFER_MEMORY Max number of bytes to allow for sniffing.
DIFX2FITS_UVFITS_DUMP Prints in stdout the ascii dump of records from the binary visilibity file. Warning: the output may be huge.
DIFX2FITS_UVFITS_DUMP_UTCMIN Sets the minimum UTC time tag for the visibility dump. Units are seconds. Default is zero.
DIFX2FITS_UVFITS_DUMP_UTCMAX Sets the maximum UTC time tag for the visibility dump. Units are seconds. Default is 86400.
DIFX_USE_CABLE_CAL If 0, then cable calibration files are ignored. Default is 1.

PLEASE file all bug reports at http://svn.atnf.csiro.au/trac/difx .
Include at a minimum the output of difx2fits with extra verbosity
(that is with -v -v). The .input, .im & .calc files may help too.

通常,如果不熟悉一个程序的话,可以通过运行此程序,了解可用的选项以及语法的帮助。

如果需要更详细的帮助,可以参考DiFX的用户手册。

不过手册中也不一定是最新的内容,目前可以考虑通过阅读 https://difx.readthedocs.io 来阅读最新的文档。

预备工作

DiFX包含一套程序,库和小型实用程序,通常安装在非系统目录中,所以如果没有配置的话,是不能使用的。

另外实际使用的相关处理机可能会安装多个版本。

这种情况下,每个版本都可以通过设置脚本进行选择。 对于本次的演示,使用单个DiFX版本,并且可以通过键入来配置

1
$ source setup.bash

其中setup.bash是一个设置脚本,可以在DiFX安装过程中找到。

这种方法的弊端在于,每次打开新的终端都需要键入这个命令,所以,可以把这个命令加到.bashrc中,这样每次打开终端都将自动设置好需要的环境。

启动时延模型服务

在计算机启动后需要启动一次时延模型服务。 这可以通过以下方式完成:

1
$ startCalcServer

这个命令将在后台启动了一个名为CalcServer的进程。

不过在DiFX2版本之后,这个服务已经不再需要了,相关处理的时延多项式可以通过difxcalc来完成。

准备数据集1:2台站UT1-UTC观测

创建工作目录

在您的主目录中创建一个新目录,比如~/data/,然后进入该目录

1
2
$ mkdir ~/data/
$ cd ~/data/

拷贝.vex文件和.v2d文件

.vex 文件是由观测纲要程序生成的,该文件包含实验的基本描述,观测源的坐标以及每个scan使用的设置。

大多数相关处理实验所需的信息都包含在此文件中。

1
$ cp /the/path/of/vex/file.vex .

详细的可以参考 https://vlbi.org/vlbi-standards/vex/

.v2d文件补充了.vex文件,它包含两种类型的信息:

  1. 不包含在.vex文件中的信息,例如积分时间(也称为累积周期)以及在相关处理中要使用的频谱分辨率;
  2. 覆盖.vex文件中包含的值信息。

一般的理念是.vex文件不需要编辑,并且相关处理所需的更改应包含在.v2d文件中。

所以对于常规的观测而言,vex文件避免编辑,需要的参数可以通过v2d文件来调整相关处理的参数。

1
$ cp /the/path/of/v2d/file.v2d .

.v2d文件的名称(.v2d扩展名之前的所有内容)构成相关处理作业名称的基础。
为了防止混淆(稍后会详细介绍),建议将.v2d文件重命名为唯一的名称, 这可以是您的姓名或者处理中心的缩写。

1
$ mv file.v2d yourname.v2d

在接下来的示例中,假设它被称为yourname.v2d。 随时替换为你喜欢的名字。

生成要相关处理的基带数据列表

相关处理需要知道在哪里找到数据以及要与每个文件关联的时间范围。

这可以通过检查数据本身的工具来完成。

对于这个特定的实验,数据是用称为Mark5B的数据格式记录的(这种数据的描述请参阅http://www.haystack.mit.edu/tech/vlbi/mark5/mark5_memos/019.pdf)。

一个名为 m5bsum 的工具可以制作需要的列表信息。

比如分别对来自两个站点的数据执行此操作(其中PT = Pie Town和MK = Mauna Kea,这两个站点都是美国的VLBA天线)。

1
2
$ m5bsum -s /the/data/of/pt/station/n6043/NRAO+301* > filelist.pt
$ m5bsum -s /the/data/of/mk/station/n6043/NRAO+390* > filelist.mk

-s 选项很重要,上面的命令会强制生成每个文件的一行摘要,可以给后来的软件使用。

请注意,您可以将这些大型数据文件保留在当前位置,而不需要将其拷贝到处理目录,并且建议相关处理的目录和原始数据最好分开存放。
比如相关处理的结果可以存放在~/corr/目录下,而原始数据可以存放在/data/目录下。
如果您想查看单个文件的更多详细信息,可以尝试:

1
$ m5bsum /the/data/of/pt/station/n6043/NRAO+301_0540_N6043_PT_No0008

这里创建的两个文件将需要在.v2d文件中引用,进行后面的相关处理。

这些文件是ASCII文本,可以使用cat,less或您喜欢的编辑器查看。

长数字是以MJD表示的开始和停止时间。

cat filelist.pt

检查并修改.v2d文件

.v2d文件已经创建好。

文件中的许多内容都可以更改。

对于第一次相关处理,建议不要改变任何东西。

如果时间允许,可以尝试更改一些参数。

如果您这样做,最好重命名.v2d文件,以便可以保留以前相关处理的输出。

可以尝试的一些相关参数是:

  • tInt 积分周期(秒):数字最好在0.25和4之间
  • specRes 相关处理输出的谱分辨率(MHz)。 数字最好在0.05和0.5之间
  • fftSpecRes 执行FFT的分辨率。 必须是specRes必须是整数倍。 这会影响光谱响应。
  • clockOffset 改变时钟偏移(微秒)并产生输出中的相位斜率。 建议可以尝试数字高达0.2左右。
  • addZoomFreq 允许放大到带宽的一部分。 这是一个高级功能,对不同带宽的可以考虑。

关于 vex2difx 的详细文档可以参考其使用说明 vex2difx .

一旦 .v2d 文件准备就绪,运行 vex2difx :

1
$ vex2difx yourname.v2d

仔细查看输出。 可能会有有意义的消息。
如果您看到错误,则该步骤失败,您需要调试.v2d文件。
如果您看到警告,则可能会出现问题,但请仔细查看消息,因为它可能意味着某些内容可能是不对的。
如果您看到一个注释,那么 vex2difx 中做出了一些假设,这可能是预期的,但您可能需要确保它是有意义的。

vex2difx 为项目生成一个或多个作业。 每个作业都有一个不同的数字(在下划线之后)。
此阶段的每个作业应该已经有一些文件。 .input 文件包含作业的DiFX配置,.calc 文件包含生成延迟多项式所需的信息。
这两个文件都是ASCII文本,可以像为filelist文件所做的那样查看。

生成时延多项式

延迟多项式用于计算每个数据流延迟所需的时间,以使波前从接收传播到地球中心,通常为10毫秒或更少。
Goddard Calc程序用于执行此操作。 当前的安装使用Calc 9.1(通过此处的说明),但是Calc 11可通过名为 difxcalc 的程序提供给difx
执行Calc的最简单方法是运行

1
$ calcif2 -a

它将遍历当前目录中所有的.calc文件并生成模型文件(以.im结尾)。
同样,这些输出文件是ASCII文本,可以检查。

启动一些监视进程

当DiFX运行时,它会产生信息(有时是错误)消息。 它还生成状态信息。 这些信息的位是多播的,以便本地网络上的任何进程都可以听到。 这意味着您将能够看到来自邻居进程的消息。 要仅过滤与您的进程相关的消息,请使用标准unix工具grep来过滤输出。 如果您愿意,可以在没有grep的情况下运行并立即查看所有人的信息! 请注意,即使在相关处理正在进行时,您也可以启动和停止这些监视器进程。

启动错误或者消息监视

启动一个新的终端窗口并在shell中设置环境:

1
$ source setup.bash

然后运行

1
$ errormon | grep yourname

但是不要忘记将我的名字更改为您的进程的名称。

启动状态监视

启动一个新的终端窗口并在shell中设置环境:

1
$ source setup.bash

Then run 然后运行

1
$ statemon | grep yourname

启动DiFX!

此时,一切就绪,可以开始进行相关处理了。可以使用以下命令运行DiFX:

startdifx -v -f -n yourname*.input

请注意,-f 选项强制执行并将覆盖同一作业的以前的相关结果。 小心使用!
-v 选项仅增加输出的详细程度,并且在这种情况下需要 -n 选项以防止覆盖机器文件,描述要使用的计算机集群的哪些元素(在这种情况下仅为您的工作站)。

运行这些作业根据观测时常、台站等的不同需要一会时间。 在运行时,您可以监视两个诊断窗口。

转换为FITS输出

difx2fits 程序接受DiFX的原始输出以及用于驱动它的文件,以生成FITS-IDI格式的文件。
FITS-IDI是干涉测量数据的标准格式,文档位于http://www.aoc.nrao.edu/~egreisen/AIPSMEM114.PDF
此文件格式适合读入AIPS,这是天文VLBI观测的常规数据路径。

difx2fits 还会生成一些诊断输出,这些输出非常方便(请参见下一节)。

运行difx2fits:

1
$ difx2fits yourname*.difx YOURNAME.FITS

Make diagnostic plots and inspect

一个名为difxsniff的工具可用于制作“sniffer plots”,以快速查看数据。 NRAO的数据分析师使用这些图来确定项目的成功。 运行:

1
$ difxsniff YOURNAME.FITS PT

第二个参数PT是将在某些图中用作“参考天线”的站点。 通常,VLBI阵列中心附近的行为良好的天线用于此。 这将在名为sniffer / PT /的子目录中生成文件。 主要感兴趣的文件如下:

  • YOURNAME.apd.ps : 绘制所有基线到参考天线的速率,延迟,相位和幅度随时间变化的图
  • YOURNAME.acb.ps : 绘制所有自相关带通
  • YOURNAME.xcb.ps : 绘制所有与参考天线的交叉相关带通
  • YOURNAME.wts.ps : 绘制数据有效权重随时间变化

所有这些文件都是PostScript文件,可以使用任何PostScript查看器查看。 例如,您可以使用evince:

1
$ evince YOURNAME.apd.ps

制作Mark4输出以进行大地测量处理

确保回到实验目录(即,如果您进入了sniffer目录,请回来),您可以从相同的DiFX输出中制作Mark4数据集。 这可以通过以下方式调用:

1
$ difx2mark4 yourname*.input

输出文件将放在一个编号的目录中(默认为1234/)。

数据集2:10站VLBA观测

使用上面的工具(有一些例外:请参见下文),尝试相关10个站点的VLBA观测。 问题中的数据使用多线程VDIF数据(如果您想知道VDIF数据的格式,请参见http://vlbi.org/vdif/docs/VDIF_specification_Release_1.1.1.pdf)。 下面是一些基本的信息,应该可以让您开始:

  1. 一个可用的scan数据。
  2. 数据来自对夸克星的12.2 GHz观测,具有4个基带通道,每个通道4 MHz。
  3. 基带通道以极化对的形式出现:RCP和LCP。
  4. 基带数据文件可以在/difx_data/ts036h(站点名称是文件名的倒数第二个字段)
  5. VEX 和 示例.v2d文件可以在同一位置找到(称为ts036h.vex.obs和ts036h.v2d)
  6. 生成文件列表,使用vsum -s而不是m5bsum -s
  7. 制作10个文件列表。 请注意,10个VLBA站点的站点代码为:BR,FD,HN,KP,LA,MK,NL,OV,PT,SC,如.v2d文件顶部所列。

可选的练习

如果您有兴趣详细了解基带数据,则可以尝试以下内容。 这些主要是为了说明与相关处理无关的检查数据的一些工具。

制作基带通道的高分辨率频谱

这个实用程序m5spec可以读取基带数据并生成频谱。 该程序和包含频谱的输出文本文件具体信息可以参考DiFX参考手册。

这个程序可以在许多种VLBA基带数据(包括第一个数据集中的Mark5B数据)上工作,但不能在具有多个线程的VDIF数据上工作(例如,来自第二个数据集的数据)。 适用于数据集1数据的数据格式参数是Mark5B-2048-16-2,生成每个基带通道500个频谱点的完整命令是:

1
m5spec /home/difx_data/n6043/NRAO+301_0540_N6043_PT_No0008 Mark5B-2048-16-2 500 2000 spec.out

这里的数字2000是要处理的FFT帧数。 增加该数字将导致更多的平均值和信噪比更高的频谱。
可以更改这两个数字(频谱点数和要处理的FFT数),以了解这些参数如何更改输出。

gnuplot 程序可用于绘制数据。 首先在终端中启动gnuplot:

1
$ gnuplot

然后在提示符下,您可以发出绘图命令,例如:

1
p 'spec.out' u 1:2 w l

第1列(在1:2参数中标识)是频谱点频率偏移(从0开始,延伸到通道的带宽),第2列是第一个基带通道的幅度数据。 应该注意三个特征:

  • 带通朝着带宽的边缘下降,但不会降至零。 这意味着什么?
  • 数据中每1 MHz有尖峰。 这些是pcal信号。 随着频谱点数的增加,脉冲校准音的相对强度如何变化? 为什么?
  • RFI: 信号在带通顶部,与脉冲校准音无关,可能是RFI。 特别是S波段通道有RFI。

或许逐个查看16个基带通道会更有启发性,以了解真实数据的样子。

探测VDIF数据头

你可以使用名为printVDIFheader的程序解码并打印VDIF数据帧的帧头信息。
此程序接受VDIF数据文件(例如,来自ts036h观测)并打印每个帧的头的内容。
为了防止数据永远进行,您可能希望使用unix工具“ less”来控制输出。

1
2
cd /home/difx_data/ts036h
printVDIFheader NRAO+338_0039_TS036H_NL_No0001 | less

The header can be printed in binary with:
头可以以二进制形式打印:

1
printVDIFheader NRAO+338_0039_TS036H_NL_No0001 5032 | less

或者可以打印更多输出:

1
printVDIFheader NRAO+338_0039_TS036H_NL_No0001 5032 long | less

探测80 Hz噪声

一个名为m5fold的程序“折叠”给定频率处的功率,并产生该周期内相位的功率曲线。 在VLBA(以及其他几个VLBI天线)上,噪声功率是通过方波注入并由下游电子设备解码以确定系统温度的。

可以尝试查看n6043的数据:

1
2
cd /home/difx_data/n6043
m5fold NRAO+301_0540_N6043_PT_No0008 Mark5B-2048-16-2 50 20000 80 fold80

然后使用gnuplot绘制输出文件“ fold80”。 第一列是相位(以秒为单位表示自第一个相位bin以来的时间),第2列到第17列对应于16个基带通道。 上述命令中的数字“ 80”是要折叠的频率。

gnuplot

p 'fold80' u 1:5

试一试其他频率,例如与80 Hz不成比例的频率(例如79 Hz)。 如果您尝试40 Hz,您会期望什么?

你可以通过增加命令中的数字“ 50”来增加折叠轮廓中的样本数。 您可以通过更改“ 20000”来增加或减少要处理的数据量。 越大,输出信噪比越高。

研究其他人的相关处理

这个相关状态消息被发送到每个人都可以访问的本地网络上的多播地址。
因此,您可以在不干扰的情况下查看其他机器正在做什么。
要做到这一点,请启动2个以上的终端,并在每个终端中运行setup_difx setup脚本。 然后运行

1
2
$ errormon
$ statemon

这两个终端将显示与专用监视器终端相同的输出,但将包括房间中运行的所有作业的信息。