Linux-Note
Table of Contents
- 查看用户
- nmap
- Linux 关闭/开启密码登录(仅证书登录)
- ssh生成公私钥:
- 解决 ssh 连接服务器,长时间不使用,会自动断开的问题
- linux bashrc 里 alias 加参数如何做?
- 合并视频
- mylist.txt 为 ffmpeg 合并视频的配置文件,文件格式如下:
- vi
- less
- ss-server
- 解决 ssh 连接超时时间(ssh timeout)的设置方法
- ssh
- chmod,chown,chgrp
- 文件分割/合并
- tcpdump
- less 乱码
- 修改主机名
- 建用户并赋予 sudo 权限
- 禁用 ping
- `端口的开启和关闭也就是软件服务的启动和关闭`
- netstat
- `mac osx 终端批量删除文件`
- `清除历史`
- `查找并杀死 tomcat`
- `ls 命令`
- `du 命令`
- 查看硬盘使用情况
- 查看内存
- vim
- mac 版 SourceTree 跳过注册登录
- idea–IntelliJ IDEA 隐藏不想看到的文件或文件夹
- IDEA fileType
- IDEA 去掉注释中的错误
- Microsoft Remote Desktop for Mac
- Linux 下十大命令行下载工具
- java stream sorted
- Mac 网卡命令行
- item2
- mac 网关和路由
- 杀掉查询出来的进程
- shopt
- pbcopy
- arp -a
- 配色
- 软连接
- 定时任务
- spark 生态圈
- mac ox 终端显示 bogon 的问题
- mac 恢复 launchpad 布局
- 加入开机启动脚本
- PS1
- 解决终端命令无效
- curl
- lsof
- buff/cache
- ssh
- cpu
- rpm
- 防火墙
- 扩展属性@
- 开关机
- 安装nginx
- 查询域名对应的 IP 地址`nslookup`
- mysql
- 网卡
- ntp server
- ubuntu 版本
- 防火墙(ufw)
- ubuntu 为用户 pdpadmin 赋予 sudo 权限,并且不用输入 root 密码
- 因为修改了/etc/sudoers 以及相关权限,导致 sudo 无法使用,恰好 Ubuntu 的 root 密码没有设置。
- Ubuntu 修改时区和更新时间
- ubuntu 版本查看命令
- centerOS 查看系统信息
查看用户
- cnblogs
- cat /etc/passwd | cut -f 1 -d :
注:| 是管道,把cat的输出传给cut处理;后面的cut取出每一行的以:分割的第一栏
/etc/passwd 文件存放的是用户信息.由六个分号组成的7个信息,分别是:
- 用户名 (magesh): 已创建用户的用户名,字符长度 1 个到 12 个字符。
- 密码(x):代表加密密码保存在 `/etc/shadow 文件中。
- 用户 ID(506):代表用户的 ID 号,每个用户都要有一个唯一的 ID 。UID 号为 0 的是为 root 用户保留的,UID 号 1 到 99 是为系统用户保留的,UID 号 100-999 是为系统账户和群组保留的。
- 群组 ID (507):代表群组的 ID 号,每个群组都要有一个唯一的 GID ,保存在 /etc/group文件中。
- 用户信息(2g Admin - Magesh M):代表描述字段,可以用来描述用户的信息(LCTT 译注:此处原文疑有误)。
- 家目录(/home/mageshm):代表用户的家目录。
- Shell(/bin/bash):代表用户使用的 shell 类型。
//查看用户 cat /etc/passwd or cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more or cat /etc/passwd | cut -f 1 -d : //查看用户组 cat /etc/group //查看当前活跃的用户列表 w
nmap
##自行设置端口范围进行扫描 nmap -p22,80,7771 192.168.34.90 nmap -p1-9999 192.168.34.90
Linux 关闭/开启密码登录(仅证书登录)
vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys #默认PasswordAuthentication 为yes,即允许密码登录,改为no后,禁止密码登录 PasswordAuthentication no 重启服务 service sshd restart
ssh生成公私钥:
- ssh-keygen -t [rsa|dsa]
- 根据提示起名(例子:ykyk),不输密码
- 生成2个文件:ykyk 和 ykyk.pub
- 将公钥考到对方机器的用户目录下 ,并将其复制到~/.ssh/authorized_keys中(操作命令:cat ykyk.pub >> ~/.ssh/authorized_keys )
- 设置.ssh/ 目录的权限为==700==;
- 设置authorized_keys权限为600;($ chmod 600 authorized_keys)
说明:
- 生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys
- 某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了
解决 ssh 连接服务器,长时间不使用,会自动断开的问题
【客户端主动保持连接】
- 修改系统 ssh 端配置文件:
sudo vi /etc/ssh/ssh_config ServerAliveInterval 30 //每隔 30 秒向服务器发送一个空数据包
linux bashrc 里 alias 加参数如何做?
alias ttt='test() { echo $1;}; test' 然后终端输入:ttt 33,就会输出 33 eg: alias lg='log() { git lg -$1; echo -e "\n";}; log'
合并视频
ffmpeg -f concat -i mylist.txt -c copy output.mp4
mylist.txt 为 ffmpeg 合并视频的配置文件,文件格式如下:
file '/path/to/file1' file '/path/to/file2' file '/path/to/file3'
vi
vi filename :sp filename1 //上下分屏; //ctrl+w+j; ctrl+w+k :vsp filename1 //左右分屏;//ctrl+w+h; ctrl+w+l :sp . //选择当前路径下文件,并以上下分屏打开
less
浏览多个文件
方式一,传递多个参数给 less,就能浏览多个文件。 less file1 file2 方式二,正在浏览一个文件时,使用 :e 打开另一个文件。 less file1 :e file2 当打开多个文件时,使用如下命令在多个文件之间切换 :n - 浏览下一个文件 :p - 浏览前一个文件
ss-server
解决 ssh 连接超时时间(ssh timeout)的设置方法
设置 ssh 超时时间 *
修改自己用户目录下的.bashrc 文件,加上
export TMOUT=1000000 (以秒为单位) 然后运行: source ~/.bashrc 在/etc/ssh/sshd_config 中加入: ClientAliveInterval=60
每一分钟,sshd 都和 ssh client 打个招呼,检测它是否存在,不存时即断开连接。
—
ssh
ssh -p 端口 用户@ip 地址
—
chmod,chown,chgrp
- https://blog.csdn.net/zhouleiblog/article/details/9325913
- chmod #更改文件权限(rwx)
- chown #更改文件拥有者
- chgrp #更改文件所在用户组
chown *
chown [-R] 账号名称 文件或目录 chown [-R] 账号名称:用户组名称 文件或目录 示例 1: [root@localhost home]# touch testfile //由 root 用户创建文件 [root@localhost home]# ls testfile –l -rw--w--w- 1 root root 0 Jun 7 19:35 testfile //文件的拥有者及拥有者级均为 root [root@localhost home]# chown yangzongde testfile //修改文件拥有者为 yangzongde [root@localhost home]# ls testfile -l -rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile //查看文件拥有者为 yangzongde,但组仍为 root 示例 2: chown bin install.log ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log chown root:root install.log ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
chgrp *
chgrp [-R] 用户组名称 dirname/filename ... 示例 3 [root@localhost home]# ls testfile -l -rw--w--w- 1 yangzongde root 0 Jun 7 19:35 testfile //查看文件拥有者为 yangzongde,但组为 root [root@localhost home]# chgrp yangzongde testfile //修改拥有者组为 yangzongde [root@localhost home]# ls testfile -l -rw--w--w- 1 yangzongde yangzongde 0 Jun 7 19:35 testfile [root@localhost home]# chown root:root testfile // 使用 chown 一次性修改拥有者及组 [root@localhost home]# ls testfile -l -rw--w--w- 1 root root 0 Jun 7 19:35 testfile 示例 4 [root@linux ~]# chgrp users install.log [root@linux ~]# ls -l -rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log 示例 5 更改为一个 /etc/group 里不存在的用户组 [root@linux ~]# chgrp testing install.log chgrp: invalid group name `testing' <== 出现错误信息~找不到这个用户组名~
文件分割/合并
例子 *
源文件:TW-REL-4.0.8.3.zip //分割 split -b 11m TW-REL-4.0.8.3.zip tw_4083_ //合并 cat tw_4083_* > tw_4083_all.zip
—
tcpdump
sudo tcpdump -i ens192 host 192.168.3.130
—
less 乱码
export LESSCHARSET=utf-8 export LESS=Mrf
—
修改主机名
hostname yk #临时生效 hostnamectl set-hostname yk #永久生效 vi /etc/hostname #永久生效
—
建用户并赋予 sudo 权限
- https://www.cnblogs.com/leeyongbard/p/9513960.html
- https://www.linuxidc.com/Linux/2016-12/139018.htm
adduser yk passwd yk(q123456) whereis sudoers ll /etc/sudoers chmod +w /etc/sudoers vi /etc/sudoers - 在 root ALL=(ALL) ALL 下面增加 - yk ALL=(ALL) NOPASSWD: ALL chmod -w /etc/sudoers su yk # 完全删除用户 userdel -r yk # 查看是否删除干净 find / -name "*yk*"
—
禁用 ping
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
`端口的开启和关闭也就是软件服务的启动和关闭`
netstat
查看当前服务器的端口监听状态 netstat -tunl 查看已经联机的连接状态 netstat -tun 查看端口对应什么服务 netstat -antlp
`mac osx 终端批量删除文件`
- `find ./ -name "*.html" -exec rm -rf {} \; 注意 {}和\;之间有空格`
- find [目录名] -name "文件名" -exec rm -rf {} \;
搜索删除文件 例如:find / -name *.raw -exec rm -rf {} \; 其中, -exec 表示后面执行命令 "{}" 表示查询到的文件名 -rf 为删除命令 rm 的参数,r 表示递归删除, f 表示不需要确认,两个参数可根据需要去留
`清除历史`
$ history -c && exit
`查找并杀死 tomcat`
ps -aux | grep 进程名: 进程pid一直变化
- 欲通过命令ps -aux | grep 进程名 返回某进程的进程号,再通过kill杀掉改进程,在这个过程中,如果grep不能匹配到正确的进程号,则grep本身会产生一条(并不是对应进程的进程号),并且这条信息的pid一直在变化。
- 剔除掉grep本身产生的一条输出,在命令后面加上`-v grep`
- 例子:ps -aux | grep app | grep -v grep
> sudo kill -9 `ps -ef|grep tomcat | grep -v grep | awk '{print $2}'`
`ls 命令`
ls -lt # 按时间排序(默认倒序) ls -lt | tac # 按时间升序排序 ls -lSh #按大小排序(默认倒序) ls -lh #按 M 显示文件大小 ls | wc -w #查看文件数量 ls -F | grep "/$" #只显示目录 ls -al | grep "^d" #只显示目录 ls -al | grep "^-" #只显示文件 ls -l | grep "^-" | wc -l #查看文件个数 ls -l | grep "^d" | wc -l #查看目录个数 ls -Rl | grep "^-" | wc -l # 递归查看目录里面所有文件文件个数
`du 命令`
#按文件大小排序并拿出最大的 20 个 du -h ./* | sort -hr | head -20 #查看每个文件夹的大小 du -sh /* #只显示 1 层目录 du -d 1 -h #只显示 2 层目录 du -d 2 -h
查看硬盘使用情况
`df -h `
查看内存
`free -h`
vim
esc :%s/1/2/g // 把全文的 1 替换成 2 /末尾加 g 是全局替换,不加 g 只替换每行第一个 esc / 加想搜索的内容 n 下一个 N 上一个 esc D //删除当前行光标后 esc dd //删除当前行 esc dd //删除当前行
mac 版 SourceTree 跳过注册登录
- 打开终端执行如下命令:
`defaults write com.torusknot.SourceTreeNotMAS completedWelcomeWizardVersion 3`
idea–IntelliJ IDEA 隐藏不想看到的文件或文件夹
<p>打开 IntelliJ IDEA,File -> Settings -> Editor -> File Types

IDEA 去掉注释中的错误

Microsoft Remote Desktop for Mac
Linux 下十大命令行下载工具
java stream sorted
1、sorted() 默认使用自然序排序, 其中的元素必须实现 Comparable 接口 2、sorted(Comparator<? super T> comparator) :我们可以使用 lambada 来创建一个 Comparator 实例。可以按照升序或着降序来排序元素。 下面代码以自然序排序一个 list list.stream().sorted() 自然序逆序元素,使用 Comparator 提供的 reverseOrder() 方法 list.stream().sorted(Comparator.reverseOrder()) 使用 Comparator 来排序一个 list list.stream().sorted(Comparator.comparing(Student::getAge)) 把上面的元素逆序 list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
item2
- https://www.jianshu.com/p/3436bcb17a03
- 可以使用 `⌘ + /` 快速定位到光标所在位置
mac 网关和路由
临时添加
> sudo route -n add -net 192.168.1.0 -netmask 255.255.255.0 192.168.0.170
查看
> netstat -nr | grep 170
杀掉查询出来的进程
> ps -ef|grep mongo | grep -v grep | awk '{print $2}' | xargs kill -4
shopt
- shopt 命令用于显示和设置 shell 中的行为选项,通过这些选项以增强 shell 易用性。
- shopt 命令若不带任何参数选项,则可以显示所有可以设置的 shell 操作选项。
开启与关闭
- 开启 shopt 命令:shopt -s extglob
- 关闭 shopt 命令:shopt -u extglob
开启之后,以下 5 个模式匹配操作符将被识别:
?(pattern-list) - 所给模式匹配 0 次或 1 次; *(pattern-list) - 所给模式匹配 0 次以上包括 0 次; +(pattern-list) - 所给模式匹配 1 次以上包括 1 次; @(pattern-list) - 所给模式仅仅匹配 1 次; !(pattern-list) - 不匹配括号内的所给模式。
实例:
删除文件名不以 jpg 结尾的文件:
`rm -rf !(*jpg) `
删除文件名以 jpg 或 png 结尾的文件:
`rm -rf *@(jpg|png)`
pbcopy
#copy id_rsa.pub 文件的内容到剪贴板: pbcopy < ~/.ssh/id_rsa.pub #粘贴剪贴板的内容 pbpaste
arp -a
> 查看局域网中所有使用的 ip 和 mac 地址
配色
.bash_profile
export CLICOLOR=1 export LSCOLORS=gxfxcxdxbxegedabagacad export PS1='\[\e[01;33m\][\[\e[01;32m\]\u\[\e[01;33m\]@\[\e[01;35m\]\h:\[\e[ 01;33m\]] \[\e[01;36m\]\w \[\e[01;32m\]\$ '
.vimrc
set nu colorscheme pablo syntax on
软连接
- `sudo ln -s "/Applications/subl.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl3`
- `sudo ln -s "/Applications/vscode.app/Contents/Resources/app/bin/code" /usr/local/bin/vscode`
定时任务
crontab
![image]()
spark 生态圈
![image]()
mac ox 终端显示 bogon 的问题
sudo hostname yourname eg: sudo hostname Yangk
mac 恢复 launchpad 布局
`defaults write com.apple.dock ResetLaunchPad -bool true; killall Dock`
加入开机启动脚本
1.chkconfig
设置为 chkconfig,可以编写脚本,查看设置开机自启动的命令 –add 表示添加程序自启动, --list 表示查看。 以后的程序如果需要使用 chkconfig 开机自启动,那么需要在启动程序中加入三行: # chkconfig:2345 20 80 # description: Saves and restores system entropy pool for \ # higher quality random numbergeneration. 第一行中的 20,80 是启动级别,不能与其他程序一样,因此,需自定义设置。
2./etc/rc.d/rc.local
配置在/etc/rc.local 文件中。直接将软件服务的启动命令写在 rc.local 文件 注意:编辑完 rc.local 文件后,一定要给 rc.local 文件执行权限,否则开机时不会执行 rc.local 文件中脚本命令 chmod+x /etc/rc.d/rc.local 注意此处,是/etc/rc.d/rc.local,而不是/etc/rc.local,如果给/etc/rc.local 执行权限是无效的,因为/etc/rc.local 是软链接,真正的文件是/etc/rc.d/rc.local
> 另外,关于在 rc.local 文件中指定用户执行脚本命令,使用 su 命令即可,命令格式: > `su - username -c "your-cammand"` ,如:
touch /var/lock/subsys/local JAVA_HOME=/usr/local/jdk1.8.0_171 export JAVA_HOME sh /usr/local/apache-tomcat-7.0.88/bin//startup.sh /bin/su - root -c /var/local/mhys-mcbd/mcbd_restart.sh
PS1
`export PS1='\[\[\033[01;36m\]\[\h\](\W\[\033[01;36m\])$\[\033[00m\] '` `export PS1="\[\e]0;\u@\h: \W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\H\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "`
解决终端命令无效
- `export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin` `vi ~/.bash_profile` - 把全部内容删除(将自己有用的部分备份,Terminal 修复后再加到里面),加入 PATH: export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 保存文件并退出(不要退出 Terminal) source .bash_profile
curl
curl -H "Content-Type:application/json" -X POST -d 'json data' URL curl -H "Content-Type:application/json" -X POST -d '{"user": "admin", "passwd":"12345678"}' http://127.0.0.1:8000/login curl -H "Content-Type:application/json" -X POST -d '{"token": "greedisgood"}' http://127.0.0.1:3000/api/initialization
lsof
> list open file; > 通过 list open file 命令可以查看到当前打开文件,在 linux 中所有事物都是以文件形式存在,包括网络连接及硬件设备。
buff/cache
echo 1 > /proc/sys/vm/drop_caches:表示清除 pagecache。 echo 2 > /proc/sys/vm/drop_caches:表示清除回收 slab 分配器中的对象(包括目录项缓存和 inode 缓存)。slab 分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的 pagecache。 echo 3 > /proc/sys/vm/drop_caches:表示清除 pagecache 和 slab 分配器中的缓存对象。
ssh
`ssh s187 "cd /home ; ls"`
- 双引号,必须有。如果不加双引号,第二个 ls 命令在本地执行
- 分号,两个命令之间用分号隔开
cpu
`less /proc/cpuinfo`
rpm
rpm -qa|grep mongo #安装了 mongo 的哪些包 rpm -ql mongo #安装的 mongo 的路径
防火墙
> - https://blog.csdn.net/0210/article/details/60872966 > - https://www.cnblogs.com/adamas21/p/6241974.html
#查看开放的端口号 firewall-cmd --list-ports #centos 查询端口是不是开放的 firewall-cmd --permanent --query-port=8080/tcp #添加对外开放端口 firewall-cmd --permanent --add-port=8080/tcp #删除对外开放端口 firewall-cmd --permanent --remove-port=8000/tcp #添加 443 端口 firewall-cmd --zone=public --add-port=443/tcp --permanent #重启防火墙 firewall-cmd --reload
扩展属性@
`xattr -c filename` #去除文件的扩展属性@ `xattr -c -r *` #去除文件夹下所有文件的扩展属性@
开关机
1. 立即关机是 sudo halt 或者 sudo shutdown -h now 2. 10 分钟后关机 sudo shutdown -h +10 3. 晚上 8 点关机 sudo shutdown -h 20:00 4. 立即重启 sudo reboot 或者 sudo shutdown -r now
安装nginx
sudo apt-get install nginx
配置 nginx 进行域名访问
- nginx.conf
upstream testnginx{ server localhost:8080; #server localhost:8081; } server { listen 80; server_name www.testnginx.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://testnginx; #proxy_pass http://localhost:8080; #proxy_set_header Host $http_host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #index index.html index.htm; } #error_page 404 /404.html;
查询域名对应的 IP 地址`nslookup`
$ nslookup ec2-54-222-215-38.cn-north-1.compute.amazonaws.com.cn Server: 192.168.0.1 Address: 192.168.0.1#53 Name: ec2-54-222-215-38.cn-north-1.compute.amazonaws.com.cn Address: 54.222.215.38
mysql
ubuntu 版本
lsb_release -a
显示结果
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.6 LTS Release: 16.04 Codename: xenial
防火墙(ufw)
- https://www.jianshu.com/p/24bd98112d80
- https://blog.csdn.net/bigdata_mining/article/details/80699180
- https://blog.csdn.net/fox_wayen/article/details/90646533
ufw enable ufw default deny //运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。 ufw status ufw enable ufw disable ufw app list sudo ufw allow ssh sudo ufw allow 80 sudo ufw allow 443 sudo ufw delete allow 80
ufw 相关的文件和文件夹有:
/etc /ufw/:里面是一些 ufw 的环境设定文件,如 before.rules、after.rules、sysctl.conf、ufw.conf,及 for ip6 的 before6.rule 及 after6.rules。这些文件一般按照默认的设置进行就 ok。 若开启 ufw 之 后,/etc/ufw/sysctl.conf 会覆盖默认的/etc/sysctl.conf 文件,若你原来的/etc/sysctl.conf 做了修 改,启动 ufw 后,若/etc/ufw/sysctl.conf 中有新赋值,则会覆盖/etc/sysctl.conf 的,否则还以/etc /sysctl.conf 为准。当然你可以通过修改/etc/default/ufw 中的“IPT_SYSCTL=”条目来设置使用哪个 sysctrl.conf. /var/lib/ufw/user.rules 这个文件中是我们设置的一些防火墙规则,打开大概就能看明白,有时我们可以直接修改这个文件,不用使用命令来设定。修改后记得 ufw reload 重启 ufw 使得新规则生效。
ubuntu 为用户 pdpadmin 赋予 sudo 权限,并且不用输入 root 密码
pdpadmin ALL=(ALL:ALL) NOPASSWD: ALL %sudo ALL=(ALL:ALL) NOPASSWD: ALL
因为修改了/etc/sudoers 以及相关权限,导致 sudo 无法使用,恰好 Ubuntu 的 root 密码没有设置。
Ubuntu 修改时区和更新时间
ubuntu 版本查看命令
- `cat /etc/issue`
- https://blog.csdn.net/weixin_39876223/article/details/81782397
centerOS 查看系统信息
lsb_release -a
返回结果:
LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.5.1804 (Core) Release: 7.5.1804 Codename: Core