Linux (Ubuntu)

2016-04-05  本文已影响291人  Rco

Since Jan.26th,2016

1、关于目录

2、执行文件

3、nautilus,shutdown,reboot

4、ln

5、more

more ./桌面/test.py

6、df

7、(VPS)ls和dir

rancho@rancho-VirtualBox:~$ ls ./桌面
ForSharing      learning.py       test.py          汉诺塔.py~
hanol~          shoplist.data     挂载ForSharing   未解之谜(删除空白符).py
helloworld.py   shoplist.data~    挂载ForSharing~  未解之谜(杨辉三角).py
helloworld.py~  temp for test.py  汉诺塔.py        无标题文档~
ls -lh

8、find 命令

find /home/rancho/桌面 -name "test.py"

输出

/home/rancho/桌面/test.py

若为-iname,即忽视大小写影响
注意的是可以用*来泛指,比如查找文件名中含有test的文件,但切记需要对文件名加引号,不然可能引起错误(具体可能引发的错误没有仔细查阅,但加上引号应当是没有问题了的)。

find /home/rancho/桌面 -name "*test*"

输出

/home/rancho/桌面/test.py
/home/rancho/桌面/temp_test.py
/home/rancho/桌面/__pycache__/temp_test.cpython-34.pyc

9、重复命令

使用上方向键,并回车执行。
!! 并回车执行。
输入 !-1 并回车执行。
按 Ctrl+P 并回车执行。
http://linuxtoy.org/archives/history-command-usage-examples.html

10、软件卸载命令

apt-cache search test

如果显示信息太多难以看清,可以用管道提取一下

apt-cache search test|grep test
sudo apt-get --purge remove test
sudo apt-get remove test
sudo apt-get autoremove
  1. 删除 test 的安装包
sudo apt-get autoclean

注:sudo apt-get clean是删除软件(包括已安装和已卸载)的安装包,也可以使用这条命令,对硬盘空间释放得更彻底。

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

11、/bin/sh 和 /bin/bash

/bin/sh

/bin/bash --posix

可以看成效果相同。

/bin/sh -c google-chrome
/bin/sh test.sh

12、后台运行命令

test &

13、查看 USB 设备

可以查看硬件 ID

lsusb

14、swap 分区和内存的平衡

sudo sysctl vm.swappiness=10

这是暂时设置(重启失效)当内存占用达到90%时开始启用 swap,默认情况下,

vm.swappiness=60

如果想要永久改变这个值,需要更改/etc/sysctl.conf,在最后加上一行,

vm.swappiness=10
sudo swapoff -a; sudo swapon -a

会看到 swap 分区中的内容逐渐减少,到零后 off,然后再重新 on。

15、(VPS)用户的添加、删除、切换等

sudo adduser username

接下来会显示一堆信息,然后输入密码,重复确认即可。这一条命令同时会在 home 分区下创建对应的用户文件夹。

sudo usermod -a -G sudo username

usermod的参数a是 append 的意思,和G (group)一起使用。
完成后我们查看一下 username 所在的组,看是否已经加入了 sudo 组。查看组使用groups命令:

groups username
su username

如果不加 username,直接su的话表示切换到 root 用户。但要注意的是使用su切换到 root 用户后,环境变量并没有切换过去。而是用su -切换到 root 用户后,则将环境变量也切换过去了。
如果需要临时切换成其他用户执行某条命令,可以使用-c参数:

su username -c "test"

这里还可以使用sudo -s临时切换到root用户,表面区别在于su需要输入的是 root 的密码,而sudo -s需要输入的是当前用户的密码,当需要临时以 root 用户执行多条命令,但又不想输入 root 密码,也不想每次都用su -c "command"的冗长形式,可以使用sudo -s临时切换成 root。
当然,sudo -s的解释是:

执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell

(然而这一点我并不能理解)

last -n 3

显示最近的三次成功登陆情况。
lastb则是用来查看登录系统失败的情况,包括 ssh 在内,是一个防范安全的好措施。不过和last不同的是,lastb查看的是/var/log/btmp文件,因此需要 root 权限,所以一般使用sudo lastb
w查看当前系统用户登陆情况

http://goodbai.com/secure/WhoMovedYourLinuxOS.html

16、(VPS)ssh 配置

service ssh restart
GatewayPorts yes

不然的话以后远程端口转发时监听的远程端口是127.0.0.1:port,而不是0.0.0.0:port

ssh -R 80:127.0.0.1:8000

而不要用

ssh -R 80:localhost:8000

+使用端口转发时,有时长时间没有键盘动作会使中断连接,显示

packet_write_wait: Connection to XXX : Broken pipe

解决办法是在发起 ssh 的客户端(不是 server 端)配置文件中进行修改,使得每隔一段时间发送一个信号保持连接。

vi ~/.ssh/config
Host *
  ServerAliveInterval 30
  ServerAliveCountMax 5
sudo vim /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10

然后在 client 进行 ssh 连接转发 X:ssh -X test@test
尝试打开 xclock:xclock
如果报错Error: cannot open display: XXXXX,则输入echo $DISPLAY确认一下屏幕和端口是否正确,比如是否是localhost:10.0,这里如果有问题可能需要更改 server 端配置文件中的X11UseLocalhost选项,不过一般不会有问题。具体屏幕和端口的含义可以参考https://blog.finaltheory.me/note/X11-Forwarding-GUI.html
如果报错Segmentation fault (core dumped),可以参考https://askubuntu.com/questions/795418/open-gui-apps-on-a-ubuntu-16-04-machine-via-ssh-from-an-ubuntu-14-04-machine中的解决方案。第一种解决方案测试通过,即在 /usr/lib/x86_64-linux-gnu 下增加一个软链接到 /usr/lib/nvidia-361/libGLX_indirect.so.0sudo ln -s /usr/lib/nvidia-384/libGLX_indirect.so.0 /usr/lib/x86_64-linux-gnu/libGLX_indirect.so.0,具体路径根据不同的 Nvidia 版本而不同。

17、(VPS)系统时区调整

使用命令行交互界面修改

sudo dpkg-reconfigure tzdata

更多详情参考http://www.kaifazhe.me/server/110.html

18、(VPS)中文语言环境变量

在终端下显示中文有问题,可能是语言环境变量中没有安装中文,可以用locale-gen命令:

locale-gen zh_CN.UTF-8

19、(VPS)shell 脚本调试

#!/bin/sh -x

x参数意味着 xtrace,接下来会把整个脚本执行过程都打印出来。

20、(VPS)开机启动

exec 2> /tmp/rc.local.log
exec 1>&2
set -x
touch /var/lock/subsys/local
XXXXXXXXXXX
exit 0

即把日志输出到 /tmp/rc.local.log(可以修改)。

[Desktop Entry]
Type = Application
Exec = 程序启动脚本的路径

21、网络相关

sudo ifconfig eno1 down
sudo ifconfig eno1 up
sudo /etc/init.d/networking restart
route
route add default gw 192.168.1.1 

22、桌面相关

dconf reset -f /org/compiz/
setsid unity

22、UEFI 启动

23、tar

tar -cvf out.tar filename1 filename2
tar -cvzf out.tar.gz fillename1 filename2
tar -xvf file.tar
tar -xzvf file.tar.gz

24、scp

http://dola.xinfan.org/?p=517.png

25、wget

wget -r -nH -R "index.html*" http://192.168.66.66/test/

其中-r表示递归下载,-nH表示不建立主机目录,-R表示不下载的文件类型

26、rsync

rsync -av source/ destination/
rsync -av -e ssh source/ destination/
rsync -avu source/ destination/

其他相关参数说明参考 http://www.cszhi.com/20120312/rsync-simple.html

rsync --exclude="/test/.jpg"
rsync --exclude="*.jpg"
rsync --exclude-from="exclude-list.txt"

在 exclude-list.txt 中用换行符分隔开不同规则

27、rename

Perl语言版本格式:rename 's/原字符串/新字符串/' 文件名
example:仍然是刚刚那两个文件:a_01、a_02,若需要将文件名中的a替换为b,其他部分保持不变则应当键入rename 's/a/b/' a_*
参考自https://www.jianshu.com/p/ac6f695565ab

find . -name "train_predicition.csv" -exec rename 's/predicition/prediction/' '{}' \;

其中,exec 是 find 的一个参数项,关于'{}'\的意义可以参考http://www.developerq.com/article/1498736274

28、reset

清空终端

29、xargs

30、查看文件夹大小

du -h --max-depth=1

31、查看文件 MD5、SHA-1、SHA-256、SHA-512 值

python -c "import hashlib,sys;print hashlib.md5(open(sys.argv[1],'rb').read()).hexdigest()" FILE_NAME
python -c "import hashlib,sys;print hashlib.sha1(open(sys.argv[1],'rb').read()).hexdigest()" FILE_NAME
python -c "import hashlib,sys;print hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest()" FILE_NAME
python -c "import hashlib,sys;print hashlib.sha512(open(sys.argv[1],'rb').read()).hexdigest()" FILE_NAME
上一篇 下一篇

猜你喜欢

热点阅读