linux相关

linux 常用命令

查看进程占用端口号

sudo lsof -i:8080
sudo netstat -np | grep 8080

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
--numeric, -n
    Show numerical addresses instead of trying to determine symbolic host, port or user names.
-p, --program
    Show the PID and name of the program to which each socket belongs.
-a, --all
    Show both listening and non-listening sockets.  With the --interfaces option, show interfaces that are not up
--tcp|-t
    只显示 tcp 相关选项
--udp|-u
    只显示 udp 相关选项
-l, --listening
    Show only listening sockets.  (These are omitted by default.)

杀进程:kill -9 pid

测试端口连通性

安装openbsd-netcatgnu-netcat有bug

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# tcp
nc -z -v [hostname/IP address] [port number]
Connection to 192.118.20.95 22 port [tcp/ssh] succeeded!

nc -z -v [hostname/IP address] [port number]
nc: connect to 192.118.20.95 port 22 (tcp) failed: No route to host

#udp
nc -z -v -u [hostname/IP address] [port number]
Connection to 192.118.20.95 123 port [udp/ntp] succeeded!

参考:
How to Test Port [TCP/UDP] Connectivity from a Linux Server
[SOLVED] Netcat fails to connect to port on localhost

包管理

pacman 忽略包升级

编辑/etc/pacman.conf文件,添加一行:

1
2
3
4
5
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
 #IgnorePkg =
 IgnorePkg = vlc
 #IgnoreGroup =
 IgnoreGroup = plasma-desktop**

当你升级被忽略的软件(组)时,会收到提示:

1
2
sudo pacman -S vlc
:: vlc is in IgnorePkg/IgnoreGroup. Install anyway? [Y/n]

将软件包(组)加入忽略列表会永远忽略指定软件(组)的升级,直到您将其从忽略列表中删除。
只是暂时忽略,可以执行:

1
sudo pacman -Syu --ignore=vlc  --ignoregroup=plasma-desktop

参考:Ignore A Package From Being Upgraded In Arch Linux

debian中安装nodejs 9和yarn

1
wget https://deb.nodesource.com/node_10.x/pool/main/n/nodejs/最新版本(记住选amd64而不是arm64)

或者apt-cache policy nodejs,发现debian源节点数比nodejs源高:

1
2
3
4
9.5.0-1nodesource1 500
   500 https://deb.nodesource.com/node_9.x stretch/main amd64 Packages
4.8.2~dfsg-1 1000
  1000 http://ftp.br.debian.org/debian stretch/main amd64 Packages

执行# nano /etc/apt/preferences.d/nodejs,添加:

1
2
3
Package: * 
Pin: origin deb.nodesource.com
Pin-Priority: 1002

检查是否成功:$ apt-cache policy nodejs

1
2
3
4
9.5.0-1nodesource1 1002
   1002 https://deb.nodesource.com/node_9.x stretch/main amd64 Packages
4.8.2~dfsg-1 1000
  1000 http://ftp.br.debian.org/debian stretch/main amd64 Packages

然后正常安装。

添加deb https://dl.yarnpkg.com/debian/ stable main一行到/etc/apt/sources.list,然后apt-get update正常安装yarn。

参考:Can’t install latest NodeJS on Debian Stretch (Debian v9.3)
Ubuntu 17 apt-get installs cmdtest instead of yarn

其它

添加一个新分辨率

安装xorg-xrandr
获取我们想要的模式:

1
cvt 1280 700

参考:xrandr - Adding undetected resolutions

susu - 的区别

su 后面不加用户是默认切到 root
su 是不改变当前变量
su - 是改变为切换到用户的变量
也就是说su只能获得root的执行权限,不能获得环境变量

而su -是切换到root并获得root的环境变量及执行权限
语法:

$ su [user_name]
su 命令可以用来交互地更改你的用户ID和组ID。Su是switch user 或set user id的一个缩写。这个命令让你开启一个子进程,成为新的用户ID和赋予你存取与这个用户ID 关联所有文件的存取权限。因此,出于安全的考虑,你在实际转换身份时,会被要求输入这个用户帐号的密码。
如果没有参数,su 命令将你转换为 root(系统管理员)。root 帐号有时也被称为超级用户,因为这个用户可以存取系统中的任何文件。也正是这个原因,许多人将su命令看成是 supper-user(超级用户)的一个缩写。当然,你必须要提供 root密码。 想要回到你原先的用户身份,不要再使用 su 命令,你只需要使用 exit命令退出你使用su命令而生成的新的对话进程。
$ su – username
一些配置文件是为你的对话线索而设立的。当你使用命令 su username时,你的对话特征和你原始的登录身份一样。如果你想要你的对话进程拥有转换后的用户 ID一致的特征,你要使用短斜杠: su – username。

注意的是su的另外一个参数“-”,当指定该参数的时候,将会进入一个“login shell” ,即和该用户登录的情况完全一样。而不带参数“-”的时候进入的是一个“non-login shell”。那么问题就归结到“login shell”和“non-login shell“的区别上来了。

它们的差别在于,对于一个登录shell,bash在进入的时候会执行/etc/profile,~/.bash_profile,~/.bash_login, and ~/.profile中的内容,退出的时候会执行~/.bash_logout中的内容。而对于一个非登录shell,bash进入的时候会执行/etc/bash.bashrc,~/.bashrc中的内容。

bash操作

Control + A - 移动到行首
Control + E - 移动到行尾
Control + U - 清除到行首
Control + K - 清除到行尾
Control + L - 将光标移动到页首

在mongodb中查找
mysql相关
comments powered by Disqus