本文用于记录一些常用的Linux命令以备忘。
SSH服务相关 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 who who /var/log /wtmp $HOME /.bash_history history top pkill -kill -t pts/1 screen -S <sessionName> Ctrl-a d screen -ls screen -r <sessionName>
SSH SOCKS Proxy 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 noinet$ ssh -D 1080 hasinet hasinet$ ssh -D 1080 localhost -t ssh -R 1080:localhost:1080 noinet sudo dpkg -i ./libproxychains3_3.1-7_amd64.deb sudo dpkg -i ./proxychains_3.1-7_all.deb proxychains wget www.baidu.com sudo proxychains apt-get update
环境变量 1 2 3 4 5 6 7 /etc/profile —— 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置; /etc/environment —— 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量; /etc/bashrc —— 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取; ~/.profile —— 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件; ~/.bashrc —— 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取;
防火墙 Linux高层使用ufw
的防火墙为添加或删除简单规则提供了简易的方法,默认情况下,ufw处于禁用状态。几条ufw
的常用命令:
1 2 3 4 5 6 7 8 9 10 sudo ufw status sudo ufw enable sudo ufw default deny sudo ufw disable sudo ufw allow|deny [service]
低层用iptables
实现访问控制:
1 2 3 4 5 6 sudo iptables -L -n -v sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -s 10.xx.xx.xx -dport 80 -j ACCEPT
网络分析 tcpdump
是基于Unix系统的命令行式的数据包嗅探工具,可以抓取流动在网卡上的数据包。
1 2 tcpdump host 10.37.63.255 and \(10.37.63.61 or 10.37.63.95 \)
nethogs
是一款小巧的”net top”工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。
文件管理 1 2 3 4 5 ls -l| grep "^-" | wc -l find . -maxdepth 1 -type d | while read dir; do count=$(find "$dir " -type f | wc -l); echo "$dir : $count " ; done
文本编辑 vim
包管理 Anoconda 1 2 3 4 5 6 7 8 9 10 11 12 13 conda -V conda list conda env list or conda info -e conda update conda conda create -n your_env_name python=X.X(2.7/3.6) conda activate your_env_name conda deactivate
磁盘管理 Linux磁盘管理常用三个命令为df
、du
和fdisk
:
df:列出文件系统的整体磁盘使用量
du:检查磁盘空间使用量
fdisk:用于磁盘分区
例如查看指定文件夹内的文件占有空间:
1 du -h --max-depth=1 your_dir
Linux 磁盘操作的基本概念和命令 linux下挂载硬盘并合并到系统盘 linux 安装新硬盘
由于实验室工作站系统磁盘容量满了,因此要将空闲磁盘挂载上来:
1 2 3 4 5 6 fdisk -l fdisk /dev/sdc mkfs.ext4 /dev/sdc1
使用交互命令进行操作(如有旧分区想删除可以键入命令 ‘d’):
本来想使用LVM直接给系统盘扩容,但好像不行。。
1 2 3 sudo apt-get install lvm2
那直接挂载到文件夹用算了:
1 2 3 4 5 6 7 8 9 10 11 12 sudo mkdir ~/disk1 sudo mount /dev/sdc1 ~/disk1 sudo blkid echo "UUID=xxx /home/data ext4 defaults,errors=remount-ro 0 1" >> /etc/fstabsudo chmod -R 777 /home/data
/boot 空间不足 由于linux内核一直在更新,更新后,旧的内核就不在使用,但旧的内核文件还在boot里面,占据着空间,更新几次过后boot分区就会被占满,显示boot磁盘空间不足。可以将不用的内核文件删除,释放空间。
1 2 3 4 5 6 7 8 dpkg --get-selections |grep linux-image uname -a sudo apt purge linux-image-xxx-generic sudo dpkg -P linux-image-xxx-generic
有可能在执行卸载命令(sudo apt purge linux-image-xxx-generic)时报错:
…You might want to run ‘apt-get -f install’ to correct these.
这是说有的软件包缺少依赖关系,建议我们修复执行。那么执行sudo apt -f install
来修复,但又有问题:
gzip: stdout: No space left on device
原因是这样:在修复的时候需要下载依赖包,然而在/boot下本来就没有多余的空间了,所以无法修复依赖的问题。解决办法就是先把boot空间下几个比较大的文件暂存到别的文件夹,腾出来足够的空间来修复依赖,等依赖修复好了并且删除了旧的内核后再迁移回来(如果文件没什么用处就不用迁移回来了)。我删除了几个不用的内核文件initrd.img-4.4.0-128-generic
以腾出空间。
然后使用sudo apt -f install
修复成功。
再接着sudo apt purge linux-image-xxx
删除没用的旧内核即可。
参考材料 [1] Ubuntu 16.04 防火墙 [2] 使用 nethogs 查看每个进程流量 [3] /boot空间不足的解决办法