chroot

chroot https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/ 什么是 chroot chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。 为何使用 chroot 在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个: 增加了系统的安全性,限制了用户的权力;在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。 建立一个与原系统隔离的系统目录结构,方便用户的开发;使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。 切换系统的根目录位置,引导 Linux 系统启动以及急救系统等。chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。 check if in chroot if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then echo "We are chrooted!" else echo "Business as usual" fi https://unix.stackexchange.com/questions/14345/how-do-i-tell-im-running-in-a-chroot

2017-02-28 · 1 min · 73 words · -

ulimit, Linux 下设置最大文件打开数 nofile, nr_open

ulimit, Linux 下设置最大文件打开数 nofile, nr_open ulimit file-max nr_open soft limit hard limit shell 级限制 用户级限制 systemd 的 ulimit 配置 ulimit 是用于获取或者修改 shell 和 shell 创建的进程的 资源限制的一个 linux 内置命令, 是系统调用 setrlimit 的封装. ulimit 控制的是 shell 级的限制 格式 ulimit [-SHabcdefiklmnpqrstuvxPT] [limit] ulimit 参数 -a: 显示当前所有的 limit 信息。 -n: 显示可以打开最大文件描述符的数量。ulimit -n 128: 设置最大可以使用 128 个文件描述符。 -s: 线程栈大小,以 Kbytes 为单位. ulimit – s 512;限制线程栈的大小为 512 Kbytes. 操作系统栈大小 (ulimit -s) : 这个配置只影响进程的初始线程;后续用pthread_create创建的线程都可以指定栈大小。 -H: use the hard resource limit ...

2017-02-20 · 7 min · 1308 words · -

parallel command

parallel command https://gist.github.com/spidersea/8110433 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作。数据专家们,我是在对你们说。你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核。 借用卡通人物Cartman的话,“如何我能使用这些内核”? 要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel 命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作,当然,这还要借助很少用到的–pipes 参数(也叫做–spreadstdin)。这样,你的负载就会平均分配到各CPU上,真的。 BZIP2 bzip2是比gzip更好的压缩工具,但它很慢!别折腾了,我们有办法解决这问题。 以前的做法: cat bigfile.bin | bzip2 –best > compressedfile.bz2 现在这样: cat bigfile.bin | parallel –pipe –recend ’’ -k bzip2 –best > compressedfile.bz2 尤其是针对bzip2,GNU parallel在多核CPU上是超级的快。你一不留神,它就执行完成了。 GREP 如果你有一个非常大的文本文件,以前你可能会这样: grep pattern bigfile.txt 现在你可以这样: cat bigfile.txt | parallel –pipe grep ‘pattern’ 或者这样: cat bigfile.txt | parallel –block 10M –pipe grep ‘pattern’ 这第二种用法使用了 –block 10M参数,这是说每个内核处理1千万行——你可以用这个参数来调整每个CUP内核处理多少行数据。 AWK ...

2017-02-11 · 1 min · 139 words · -

urxvt

urxvt urxvt is a highly customizable terminal emulator. # install sudo pacman -S rxvt-unicode #start rxvt-unicode urxvt # 没有的话就创建这个文件, urxvt 启动的时候自动加载 vim ~/.Xresources ! 起始的行是注释 !!$HOME/.Xresources URxvt.preeditType:Root !!调整此处设置输入法 URxvt.inputMethod:fcitx !!颜色设置 URxvt.depth:32 !!中括号内数表示透明度 URxvt.inheritPixmap:true URxvt.background:#000000 URxvt.foreground:#ffffff URxvt.colorBD:Gray95 URxvt.colorUL:Green URxvt.color1:Red2 URxvt.color4:RoyalBlue URxvt.color5:Magenta2 URxvt.color8:Gray50 URxvt.color10:Green2 URxvt.color12:DodgerBlue URxvt.color14:Cyan2 URxvt.color15:Gray95 !!URL操作 URxvt.urlLauncher:chromium URxvt.matcher.button:1 Urxvt.perl-ext-common:matcher !!滚动条设置 URxvt.scrollBar:False URxvt.scrollBar_floating:False URxvt.scrollstyle:plain !!滚屏设置 URxvt.mouseWheelScrollPage:True URxvt.scrollTtyOutput:False URxvt.scrollWithBuffer:True URxvt.scrollTtyKeypress:True !!光标闪烁 URxvt.cursorBlink:True URxvt.saveLines:3000 !!边框 URxvt.borderLess:False !!字体设置 Xft.dpi:96 URxvt.font:xft:Source Code Pro:antialias=True:pixelsize=18,xft:WenQuanYi Zen Hei:pixelsize=18 ...

2017-02-10 · 1 min · 133 words · -

mmap

mmap mmap 函数是 unix/linux 下的系统调用 mmap() 函数用来将文件或者设备映射到内存中。 mmap 的特点是按需调页。最开始只申请 vma(Virtual Memory Area),并不调真正的页。当对某些页进行引用的时候,会引起一个缺页中断,再将页面调入到内存当中,这样避免了对内存的浪费。 内存映射, 是将用户空间的一段内存区域映射到内核空间, 映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。 那么对于 内核空间 <—-> 用户空间 两者之间需要大量数据传输等操作的话效率是非常高的。 mmap 是一种内存映射文件的方法, 即将一个文件或者其它对象映射到进程的地址空间, 实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上, 即完成了对文件的操作而不必再调用 read, write 等系统调用。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享 mmap 优点 对文件的读取操作跨过了页缓存, 减少了数据的拷贝次数, 用内存读写取代I/O读写, 提高了文件读取效率。 实现了用户空间和内核空间的高效交互方式。两空间的各自修改操作可以直接反映在映射的区域内, 从而被对方空间及时捕捉。 提供进程间共享内存及相互通信的方式。不管是父子进程还是无亲缘关系的进程,都可以将自身用户空间映射到同一个文件或匿名映射到同一片区域。从而通过各自对映射区域的改动, 达到进程间通信和进程间共享的目的。 同时, 如果进程A和进程B都映射了区域C, 当A第一次读取C 时通过缺页从磁盘复制文件页到内存中;但当B 再读C 的相同页面时, 虽然也会产生缺页异常,但是不再需要从磁盘中复制文件过来, 而可直接使用已经保存在内存中的文件数据。 可用于实现高效的大规模数据传输。 内存空间不足,是制约大数据操作的一个方面,解决方案往往是借助硬盘空间协助操作,补充内存的不足。但是进一步会造成大量的文件I/O操作,极大影响效率。这个问题可以通过mmap映射很好的解决。换句话说,但凡是需要用磁盘空间代替内存的时候, mmap 都可以发挥其功效。 操作文件就像操作内存一样,适合于对较大文件的读写。 用户也可创建匿名内存映射, 该映射没有对应的文件, 可用于存放程序数据。在 Linux中,若通过 malloc()请求一大块内存,C 运行库将创建一个匿名内存映射,而不使用堆内存。“大块” 意味着比阈值 MMAP_THRESHOLD还大,缺省为128KB,可通过 mallopt()调整。 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。 prot: 期望的内存保护标志,不能与文件的打开模式冲突。是以下的某个值,可以通过or运算合理地组合在一起 PROT_EXEC //页内容可以被执行 PROT_READ //页内容可以被读取 PROT_WRITE //页可以被写入 PROT_NONE //页不可访问 ...

2017-02-10 · 2 min · 270 words · -

pmap

pmap Pmap 命令: 查看进程用了多少内存, Linux Pmap Command - Find How Much Memory Process Use Pmap 提供了进程的内存映射, pmap 命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。 Pmap 实际上是一个 Sun OS 上的命令,linux 仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。我们需要 PID 或者运行的进程的唯一进程ID来查看进程内存状态, 我们可以通过/proc 或者常规命令比如 top 或 ps 得到它。 语法或用法 pmap [options] PID 在输出中它显示全部的地址, kbytes, mode 还有 mapping。 选项 -p, -show-path Show full path to files in the mapping column -x extended 显示扩展格式 -d device 显示设备格式 -q quiet 不显示header/footer行 -V 显示版本信息 单一进程内存状态 [root@info ~]# pmap 1013 1013: /usr/sbin/sshd ...

2017-02-06 · 2 min · 382 words · -

fat32, fat32 (LBA)

fat32, fat32 (LBA) http://www.tsingpost.com/articles/201403/480.html fat32和fat32 (LBA) 的区别 LBA(Logical Block Addressing)逻辑块寻址模式 LBA 模式下我们知道硬盘上数据区域由所磁头、柱面 (也磁道) 和扇区所唯确定早期系统直接使用磁头柱面和扇区来对硬盘进行寻址 (称CHS寻址) 需要分别存储每区域三参数 (称3D参数) 使用时再分别读取三参数送磁盘控制器去执行由于系统用8b来存储磁头地址用10b来存储柱面地址用6b来存储扇区地址而扇区共有512B样使用CHS寻址块硬盘大容量256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B) (若按1MB=1000000B来算8.4GB) 随着硬盘技术进步硬盘容量越来越大CHS模式无法管理超过8064 MB硬盘因此工程师们发明了更加简便LBA寻址方式LBA地址地址再表示实际硬盘实际物理地址 (柱面、磁头和扇区) LBA编址方式 CHS种三维寻址方式转变维线性寻址把硬盘所有物理扇区C/H/S编号通过定规则转变线性编号系统效率得大大提高避免了烦琐磁头/柱面/扇区寻址方式访问硬盘时由硬盘控制器再种逻辑地址转换实际硬盘物理地址 VFAT 作为FAT文件系统的一种扩展,VFAT在Windows 95中首次引入。VFAT在保持针对FAT向后兼容能力的同时,大大放宽了各项规范。举例来说,VFAT文件名中最多可以包含255个字符,并且允许使用空格或多个句点。尽管VFAT能够保持文件名的大小写状态,然而它同样无法对其加以区分。 当您通过VFAT创建一个长文件名 (长度超过8.3)时,文件系统实际上同时创建了两个文件名。其中一个为实际输入的长文件名,这个文件名对于Windows 95、Windows 98和Windows NT (4.0及更高版本)是可见的。另一个文件名为DOS下所使用的别名,该文件名为长文件名的缩写。这个DOS别名由长文件名中的前六个字符 (不包含空格)、代字符 (~)以及数字后缀所组成。 VFAT文件系统存储长文件名的方式产生了一个有趣的副作用。当您在VFAT文件系统中创建一个长文件名时,VFAT将为DOS别名分配一个目录项,为长文件名中的每13个字符分配一个目录项。从理论上讲,一个长文件名最多可以占用21个目录项。一般情况下,根目录中最多可以包含512个文件,然而,如果在根目录中使用最大长度的文件名,那么,上述限制条件将缩小的最多包含24个文件。由此可见,应当尽可能避免在根目录中使用长文件名。除根目录外,其它目录均不受这一制约因素的限制。 我们之所以在这里对VFAT进行讨论,主要是因为这种文件系统的应用范围比FAT更加广泛。除以上所提到的不同之处外,这两种文件系统在其它方面遵守相同的规范。当您在Windows NT中使用FAT对某一分区进行格式化时,该分区实际将被格式化为VFAT。在Windows NT 4.0系统环境下,您唯一可能接触真正FAT分区的方式便是使用由其它操作系统 (如MS-DOS)完成格式化的分区。 https://blog.csdn.net/tesport/article/details/5581699

2016-12-16 · 1 min · 53 words · -

linux 环境 变量, /etc/profile, /etc/profile.d/

linux 环境 变量, /etc/profile, /etc/profile.d/ ~/.bashrc, ~/.profile Archlinux Interactive, non-login shells 会加载 ~/.bashrc, login shell 不会加载 ~/.bashrc /root/.bashrc 主要是为交互式的 非登录 shell 准备的,而 root 用户登录时的默认 shell 会加载的文件是 /root/.profile,而不是 ~/.bashrc win10 WSL + zsh + oh my zsh 用 root 用户 SSH 登录 archlinux 会加载 .bash_profile, 不会加载 .bashrc win10 putty SSH 登录 同上 /etc/profile.d 自定义的环境变量要加到 /etc/profile.d 下, 这里的配置会开机加载, 配置到 ~/.zshrc 的话会每打开一个 terminal 加载一次, 不建议手动修改 /etc/profile, /etc/profile 文件属于 filesystem 包, 这个包的的更新有可能会导致 /etc/profile 的更新, 如果 filesystem 升级的时候发现 /etc/profile 被修改过, 会把新的文件安装到 /etc/profile.new 并且是不生效的状态, 有可能会导致某些不兼容的问题, 比如 perl 包安装的/etc/profile.d/perlbin.sh 使用的 append_path 函数. ...

2016-10-28 · 3 min · 521 words · -

Asahi Linux

Asahi Linux curl https://alx.sh | sh # choose an existing partition to resize 1: APFS [Macintosh HD] # Enter the new size for your existing partition: 400GB

2016-09-08 · 1 min · 27 words · -

tail command

tail command 同时监控多个日志文件 tail -f foo.log bar.log tail -f *.log Linux监测日志tail命令详细使用 如果在Linux下调试程序的朋友应该都知道tail命令,它确实是调试程序监测日志文件的能手。打开Linux输入以下命令看看命令的使用帮助 [root@lee ~]# tail –help 用法: tail [选项]… [文件]… 显示每个指定文件的最后10 行到标准输出。 若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。 如果不指定文件或文件为"-" ,则从标准输入读取数据。 长选项必须使用的参数对于短选项时也是必需使用的。 -c, –bytes=K 输出最后K 字节;另外,使用-c +K 从每个文件的 第K 字节输出 -f, –follow[={name|descriptor}] 即时输出文件变化后追加的数据。 -f, –follow 等于–follow=descriptor -F 即 –follow=name –retry -n, –lines=K output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth –max-unchanged-stats=N with –follow=name, reopen a FILE which has not changed size after N (default 5) iterations to see if it has been unlinked or renamed (this is the usual case of rotated log files). With inotify, this option is rarely useful. –pid=PID 同 -f 一起使用,当 PID 所对应的进程死去后终止 -q, –quiet, –silent 不输出给出文件名的头 –retry 即使目标文件不可访问依然试图打开;在与参数 –follow=name 同时使用时常常有用。 -s, –sleep-interval=N with -f, sleep for approximately N seconds (default 1.0) between iterations. With inotify and –pid=P, check process P at least once every N seconds. -v, –verbose always output headers giving file names –help 显示此帮助信息并退出 –version 显示版本信息并退出 ...

2016-08-14 · 1 min · 200 words · -

linux shell 文本 去重 – awk或者uniq

linux shell 文本 去重 – awk或者uniq uniq 不带参数时, 默认合并重复的行. 类似MySQL的 distinct -c, --count //在每行前加上表示相应行目出现次数的前缀编号 -d, --repeated //只输出重复的行 -D, --all-repeated //只输出重复的行,不过有几行输出几行 -f, --skip-fields=N //-f 忽略的段数,-f 1 忽略第一段 -i, --ignore-case //不区分大小写 -s, --skip-chars=N //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符 -u, --unique //只显示不重复的行 -z, --zero-terminated end lines with 0 byte, not newline -w, --check-chars=N //对每行第N 个字符以后的内容不作对照 --help //显示此帮助信息并退出 --version //显示版本信息并退出 对于awk ‘!a[$3]++’,需要了解3个知识点 awk数组知识,不说了 awk的基本命令格式 awk ‘pattern{action}’ 省略action时,默认action是{print},如awk ‘1’就是awk ‘1{print}’ ...

2016-08-09 · 2 min · 242 words · -

cd pushd

cd pushd http://os.51cto.com/art/200910/158752.htm cd - # list current dir pwd /foo # cd to /bar cd /bar pwd /bar # 可以在 $OLDPWD 变量里查看旧目录 echo $OLDPWD # cd - return to previous dir /foo cd - pwd /foo # cd -, return to previous dir /bar cd - pwd /bar pushd、popd 和 dirs pushd 和 popd 是对一个目录栈进行操作,而 dirs 是显示目录栈的内容。而目录栈就是一个保存目录的栈结构,该栈结构的顶端永远都存放着当前目录(这里点从下面可以进一步看到)。 dirs 的 参数: -p 每行显示一条记录 -v 每行显示一条记录,同时展示该记录在栈中的 index -c 清空目录栈, 将目录栈中除当前目录之外的其它目录清除 每次 cd 之后, 新目录都会被记录到目录栈中 ...

2016-07-02 · 2 min · 271 words · -

rsync

rsync install rsync pacman -S rsync sudo apt install rsync rsync -azP source dest options https://blog.csdn.net/m0_37886429/article/details/77285738 -a 同步所有, 包括修改时间、群组、权限、特殊文件、也包括递归。 -h, –human-readable 输出易读格式。 以人类可读的格式输出。 -r 递归, 在同步目录时使用 -v, –verbose 详细模式输出 -x, –one-file-system 递归时避免跨越文件系统的边界(即不能跨越挂载点) -z 压缩传输的文件 -A, –acls preserve ACLs (implies -p) 将目标ACL更新为与源ACL相同 -H, –hard-links 保留硬链结 -P 是 -progress 和 -partial 的组合。第一个选项是用来显示传输进度条, 第二个选项允许断点续传和增量传输 -X, –xattrs 将目标扩展属性更新为与源扩展属性相同。 –numeric-ids 传输文件的用户id,而不是传输用户名 使用 rsync 命令同步本地目录和远程主机目录 Rsync, 代表 “remote sync”, 它是本地和远程主机文件同步工具。它只同步更改的文件,以此实现最小化传输数据。 我们创建两个测试目录和一些文件: mkdir d1 mkdir d2 touch d1/somefile{1..5} rsync -r d1/ d2 rsync -anv dir1/ dir2 # 注意上面的dir1/中的"/"不能少,它代表同步目录下文件, 如果没有"/" 代表同步这个目录。 和远程主机进行同步目录 ...

2016-05-31 · 1 min · 137 words · -

iostat

iostat command 通过 iostat 方便查看 CPU、网卡、tty 设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。 命令格式 iostat [参数] [时间] [次数] sudo pacman -S sysstat sudo yum install sysstat sudo apt install sysstat iostat -sxz 1 iostat 1 iostat -x 1 参数 -x Display extended statistics; 显示详细信息, 显示扩展统计信息(extended statistics),包括每个设备的利用率、服务时间等。 -C 显示CPU使用情况 -d 显示磁盘使用情况 -k 以 KB 为单位显示 -m 以 M 为单位显示 -N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况 -p [磁盘] 显示磁盘和分区的情况 -t 显示终端和CPU的信息 -V 显示版本信息 -s: 显示所有设备的汇总统计(summary) -z: 省略所有值为零的设备(即没有活动的设备)。 字段 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s: 每秒读扇区数。即 delta(rsect)/s wsec/s: 每秒写扇区数。即 delta(wsect)/s rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算) wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算) avgrq-sz: 平均每次设备 I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio) avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。 await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio) svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio) %util: 一秒中有百分之多少的时间用于 I/O 操作, 或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒) Linux 系统中的 iostat 是I/O statistics (输入/输出统计) 的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 ...

2016-04-10 · 6 min · 1162 words · -

xargs

xargs xargs 可以将输入内容 (通常通过命令行管道传递), 转成后续命令的参数, 通常用途有 命令组合: 尤其是一些命令不支持管道输入, 比如 ls 避免参数过长: xargs可以通过 -nx 来将参数分组, 避免参数过长 -d 参数与分隔符, 默认情况下, xargs 将换行符和空格作为分隔符, 把标准输入分解成一个个命令行参数。 -i 表示 find 传递给xargs的结果 由{}来代替 -n 参数分组 -p 交互式提问y来确认命令的每次执行。 -t 在执行前回显各个command -I 指定每一项命令行参数的替代字符串, 我认为是和i差不多,可以这么认为 -i 可以用 -I {} 来代替 ls *.js | xargs -t -n2 ls -al # 输出如下, -n2表示, 将参数以两个为一组, 传给后面的命令。 curl http://foo.bar.com | xargs -t -n1 -d '\n' | xmllint --format 例子: 参数分组 命令行对参数最大长度有限制,xargs通过-nx对参数进行分组来解决这个问题。 首先,创建4个文件用来做实验。 touch a.js b.js c.js d.js 然后运行如下命令: ...

2016-03-10 · 3 min · 499 words · -

objdump

objdump objdump 命令是 Linux 下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。 objdump 是 gcc 工具,用来查看编译后目标文件的组成。 功能: 以一种可阅读的格式让你更多地了解目标文件、可执行文件可能带有的附加信息,也能完成目标文件或者可执行文件的反汇编。 示例: 使用 objdump 查看可执行文件的汇编代码 go build -gcflags "-N -l" test.go objdump -S --disassemble test > test.objdump 查看动态库有哪些符号,包括数据段、导出的函数和引用其他库的函数 objdump -tT xxx.so objdump -x xxx.a 查看动态库依赖项 objdump -x xxx.so | grep "NEEDED" 查看动态符号表 objdump -T xxx.so 假如想知道 xxx.so 中是否导出了符号 yyy ,那么命令为 objdump -T xxx.so | grep “yyy” 。 查看动态符号表 objdump -t xxx.so -T 和 -t 选项在于 -T 只能查看动态符号,如库导出的函数和引用其他库的函数,而 -t 可以查看所有的符号,包括数据段的符号。 版权声明:本文为CSDN博主「mayue_csdn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/mayue_web/article/details/103879976

2016-03-04 · 1 min · 73 words · -

shell basic variable, 变量

shell basic variable, 变量 注意,等号两侧不能有空格, 有空格变量会不生效. # 定义变量 foo="bar" # 使用变量 echo ${foo} ## 变量的默认值 ${xmx-600M} 默认情况下,Bash shell 是一种无类型的脚本语言, 除非用declare特别声明,否则它不会区分一个变量是整数变量、浮点数变量还是字符串变量。 在Bash shell中所有的变量都被看成是字符串,使用时也不需要进行声明。 变量的命名 bash shell中变量的命名规则和C语言相同,必须是由英文字母、数字及下划线组成,第一个字符必须是字母或下划线,变量的长度没有限制,但英文字母区分大小写。虽然,bash shell中使用变量时不需要声明,但还是提倡对一些重要的变量进行声明、添加注释,以便阅读和维护。声明或创建一个变量之后,它的作用域是当前shell,子shell无法获取父shell中定义的变量,除非该变量时环境变量。 设定变量 在bash shell中要设置某个变量的值是很容易的,只需要按照: 变量名称=值 的方式即可改变某个变量的值,需要注意的是等号的两边是不能有空格的,若值中含有空格的话,需要用引号括起来。 获取变量值 要获取某个变量的值只需要在该变量的名称前面加上$或用${}将变量括起来即可。 echo $PATH echo ${PATH} 取消与清空变量 当你不再需要某个变量时,你可能想取消该变量,即将该变量从当前名字空间中删除并释放该变量所占用的内存。在bash shell中可以用unset命令来取消某个变量。用法如下: unset -f 仅删除函数 -v 仅删除变量 unset 变量名称 或 unset -v 变量名称 -v 表示取消变量,unset除了可以用来取消变量外,还可以用来取消函数,用unset来取消函数时,用法如下: unset -f 函数名称 使用 unset 以后,变量就不复存在了,这可能并不是你想要的,你可能只是想将清除该变量中的值,使其为null,即清空变量,清空变量的操作如下: 变量名称= 环境变量 只有当一个变量成为环境变量时,它才能为子 shell 所用, 为了使一个变量成为环境变量, 需要使用 export 命令, 具体如下: 变量名称=“xxxx” export 变量名称 ...

2016-03-03 · 1 min · 165 words · -

sway

sway virtualbox 里的 sway virtualbox 窗口在不同分辨率的显示器之间切换时花屏, 剪贴板不好用, 窗口不能自动缩放 2024-01-08T08:17:03+08:00 fedora sway download Fedora Sway Spin iso virtualbox 配置显存128, 3D加速 用 iso 启动后 win + enter 打开 terminal 用 text mode 安装 liveinst –text fedora disable firewall sudo systemctl stop firewalld # replace dnf mirror with 163 dnf upgrade --refresh dnf install kernel-headers – archlinux + sway virtualbox guest addition failed to start sudo pacman -S sway sudo pacman -S swaylock swayidle swaybg sudo pacman -S dmenu # install yay yay -S wmenu sudo pacman -S foot sudo pacman -S polkit virtualbox 虚拟机要打开 3D 加速 ...

2016-02-26 · 1 min · 104 words · -

tightvnc, tigervnc

tightvnc, tigervnc tighervnc nightly build https://github.com/TigerVNC/tigervnc/releases http://tigervnc.bphinz.com/nightly/ # archlinux pacman -S tigervnc # vncserver # dell desktop vncserver -geometry 1350x670 -dpi 96 -depth 32 :1 vncserver -geometry 1364x768 -dpi 96 -depth 32 :1 vncserver -kill :1 #kill 后面有空格!!! vncviewer 192.168.2.228:1 #edis config file .vnc/xstartup #!/bin/sh startxfce4 exit full screen ctrl+alt+shift+F vncviewer: disable allow jpeg https://unix.stackexchange.com/questions/67096/xterm-warning-tried-to-connect-to-session-manager centos yum -y install tigervnc-server yum -y install tigervnc install xorg start xorg install xfce4 ...

2015-12-25 · 1 min · 74 words · -

CAS, Compare and Swap, 比较并交换

CAS, Compare and Swap, 比较并交换 JDK 5 的并发包中提供了很多类,这些类提供了比原有的并发机制更好的性能和伸缩性。要想理解这些类的工作机理,那就不得不提到 CAS。 CAS 全称是 Compare and Swap (比较并交换),是指现代主流 CPU 都支持的一种指令,这个指令能为多线程编程带来更好的性能 (稍后会详细介绍) 。 另外一个可能会被当做 CAS 的是 Compare and Set,是指 JDK 5 并发包中广泛使用的一种基于 Compare and Swap 的并发算法。严格说 CAS 仅指代前者。 java.util.concurrent 包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 java.util.concurrent 包中借助CAS实现了区别于 synchronouse 同步锁的一种乐观锁。 CAS应用 CAS: 全称Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作: 我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。 比较 A 与 V 是否相等。 (比较) 如果比较相等,将 B 写入 V。 (交换) 返回操作是否成功。 CAS 有3个操作数,内存值 V, 旧的预期值 A, 要修改的新值 B. 当且仅当预期值 A 和内存值 V 相同时,将内存值 V 修改为 B, 否则什么都不做。 ...

2015-12-01 · 3 min · 454 words · -