linux 指令学习

Posted by chinaljr on March 30, 2018

mininet 使用问题

问题描述+学习

mininet

sudo apt-get install openvswitch-testcontroller
sudo ln /usr/bin/ovs-testcontroller /usr/bin/controller 

sudo apt-get upgrade

更新安装

make

执行makefile里面的文件,编译整个文件夹里面的程序,并且确定彼此之间的关系.

无论是在linux 还是在Unix环境 中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和 makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。

c dir:在读取 makefile 之前改变到指定的目录dir;
-I dir:当包含其他 makefile文件时,利用该选项指定搜索目录;
-h:help文挡,显示所有的make选项;
-w:在处理 makefile 之前和之后,都显示工作目录。

makefile

gcc

-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。

动态链接和静态链接

-fPIC 地址无关代码
-share 动态库
-static 静态库

-ldl

如果你的程序中使用dlopen、dlsym、dlclose、dlerror 显示加载动态库,需要设置链接选项 -ldl

LD_PRELOAD

LD_PRELOAD

LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib。程序中我们经常要调用一些外部库的函数,以malloc为例,如果我们有个自定义的malloc函数,把它编译成动态库后,通过LD_PRELOAD加载,当程序中调用malloc函数时,调用的其实是我们自定义的函数.

nohup

在指令之前加上nohup使得能够后台运行,结束的时候需要exit()退出

ps -x

列出所有执行的程序,包括后台执行,在服务器的一个实例上调用能够返回所有的进程。

&

后台执行的意思,没文化的我好可怕.

echo

学习网址

用于字符串的输出

echo "It is a test" > myfile

tee

学习网址

重定向到文件中

ls | tee out.txt

  • -a:向文件中重定向时使用追加模式;
  • -i:忽略中断(interrupt)信号。

chmod

学习网址1

学习网址2

  • 属性drwxr-xr-x
    • d 文件夹
    • rwx 拥有者有可读,可写, 可执行
    • r-x 拥有者所在组的权限
    • r-x 其他人
  • r = 4, w = 2, x = 1
  • +s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
chmod 数字 文件
  • u 所有者,g 所在组,o 其他人,a 所有人
    • 增加权限
    • 消减权限
  • -R 参数表示对一个目录和后面所有的文件
  • -t 学习一个
    • 粘滞位权限便是针对此种情况设置,当⽬录被设置了粘滞位权限以后,即便⽤户对该⽬录有写⼊权限,也不能删除该⽬录中其他⽤户的⽂件数据,⽽是只有该⽂件的所有者和root⽤户才有权将其删除。设置了粘滞位之后,正好可以保持⼀种动态的平衡:允许各⽤户在⽬录中任意写⼊、删除数据,但是禁⽌随意删除其他⽤户的数据。

      chown

chown root:root

更改用户名和用户组,chown 用户名:组名

gcc

-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。

kill

ps
kill -s 9 PID

rm

删除

  • -r 向下递归
  • -f 强制删除
  • -rf 删除文件夹

shadowsocks

官方网址

sudo sslocal -c '/xxx/xxx/xxx/xx.json' -d start
sudo proxychains wget xxxx
sudo proxychains 命令
#!/bin/bash
sudo  sslocal -c '/home/hitljr/hitljr/my.json' -d start

这样写了脚本,执行的时候就sh ss即可

python3 和 python2 共存安装问题

sudo python -3 -m pip install XXX
sudo pip3 install XXX

grep global search regular expression(RE) and print out

用正则表达式搜索

mkdir

新建文件夹

sed 查找替换

sed -i 's#A#B#g' filename

A 变成 B