Linux常用指令
本文最后更新于:2 个月前
-
从本地上传文件到服务器
$ scp -r /home/yysir/dist java@ip:/tmp
即可将本地dist文件夹上传到服务器的tmp文件夹下,
然后即可连接服务器将文件移动到相应文件夹中【因为目标文件夹可能没有写入权限,所以先放入具有全部权限的tmp文件夹下,再进行移动】
-
从服务器下载文件到另一服务器或者本机
#注意:这是在服务器端,要求必须要有公网ip才能传到对应电脑,否则,只能先退出服务器,在本机然后再从服务器上下载文件。 $ scp java@ip:/tmp/test.txt yysir@ip:/home/yysir/Download
-
查看服务器图片
python3:
$ python -m http.server 8080
python2:
$ python -m simpleHTTPServer 8080
如果服务器8080端口防火墙打开了的话,在浏览器输入服务器的ip地址和端口,即可在本地查看服务器的图片。
-
rar解压
linux没有直接解压rar的功能,先去rarlab下载
解压到/opt目录下,进入rar文件夹,
sudo make
即可语法:
unrar x [fileName] 解压
rar a [rarName.rar] fileName
-
ubuntu下开启防火墙端口
$ sudo su #开启8080端口 $ iptables -I INPUT -p tcp --dport 8080 -j ACCEPT $ cd /etc/network/ #目录下如果没有iptables.up.rules iptables-save >/etc/network/iptables.up.rules $ vim iptables.up.rules #把新加入的8080端口新加入的那一行移动到合适位置【其实直接将第一行命令加到这里相应位置就可以】 # accept一定要放到reject的前面!! $ iptables-apply #检查程序是否运行中,端口是否开启 #特别的,在沸点的项目需要向学校申请开放端口
-
命令行下查看wifi
# 查看所有wifi $ nmcli device wifi list # 连接wifi $ nmcli device wifi connect 'SSID' password 'password' # 显示一个所有连接过网络的UUID列表 $ nmcli connection show # 查看所有的网络设备和状态 $ nmcli device
-
查看端口
-
查看端口是否被占用:【注意root权限】
- netstat -anp |grep 8080
- lsof -i:8080
-
查看端口是否在防火墙放行
-
netstat -ntpl【tcp类型端口】
-
netstat -nupl【udp类型端口】
-
/sbin/iptables -L -n
-
telnet ip【ip地址】 port【端口】
-
可以连接则显示
Trying ip ... Connected to ip... Escape character is '^]'.
输入’]'后,进入telnet,键入quit退出
-
不能连接则显示
Trying ip... telnet: connect to address ip: No route to host
-
-
-
内网穿透
我如果连接外网时连接内网的主机,输入192.168.1.110这样的内网ip肯定是无法连接的,这样就需要内网穿透
-
方案一:
用有公网ip的服务器,搭建ngrok进行内网穿透,这个就需要买服务器,然后自己搭ngrok了。我现在暂时还用不到服务器,就没有采取这个方案。
-
方案二:
用ngrok现成的,官网 注册一个帐号,下载zip文件,解压到opt
$ cd /opt # 安装screen使ngrok可以在后台运行 $ sudo pacman -S screen # 启动screen,-S 后面的ngrok就是一个名字而已 $ screen -S ngrok # 开启ssh默认的22端口 ./ngrok tcp 22 # 记下端口和host # 看到启动成功后,按下 ctl+A+D,使ngrok在后台运行 # 连接外网测试ssh $ ssh -p prot yysir@0.tcp.ngrok.io
更新:
我必须在本机的命令行开一个命令行界面才能连上,否则有迷之网络连接失败
-
-
在服务器上后台运行程序
前些时候(大概四到五月份)做帐号中心的项目,才开始真正熟悉Linux的各种操作和Spring Boot的学习。具体踩过的坑一时半会都说不完。不过今天又发现了一些新的问题值得记录一下⬇
# 之前仅仅是用 >file 来重定向输出文件,还有 & 来保持程序后台运行,具体命令如下: $ java -jar demo-SNAPSHOT.jar >accountcenter.out &
可是最近发现每过一段时间(大概一个月左右),程序就会自动停止,然后我就又不得不重新连服务器,把后台提起来。
今天上网查了查,找到一个可能的疏漏:要用nohup来保持程序后台运行
(具体不确定,站坑,等过一个月再来答)(过了好久,终于填坑,果然是需要nohup)
$ nohup java -jar demo-SNAPSHOT.jar >accountcenter.out &
-
nginx
-
安装:
$ sudo pacman -S nginx
-
开启服务&测试
$ sudo systemctl status nginx $ sudo systemctl start nginx $ sudo nginx -t
如果测试出现如下错误:
nginx: [warn] could not build optimal types_hash, you should increase either types_hash_max_size: 2048 or types_hash_bucket_size: 64; ignoring types_hash_bucket_size
解决方案:
$ sudo vim /etc/nginx/nginx.conf
在http模块下,server子模块前,添加如下配置:
types_hash_max_size 2048;
server_names_hash_max_size 2068;
types_hash_bucket_size 1024;#重启 $ sudo systemctl restart ngxin #测试 $ sudo nginx -t #出现以下提示即可: #nginx: the configuration file /etc/nginx/nginx.conf syntax is ok #nginx: configuration file /etc/nginx/nginx.conf test is successful
-
配置反向代理
$ sudo vim /etc/nginx/nginx.conf
<一、通过域名访问>
添加如下配置server { listen 80; server_name yinchao; root /opt/BlogFile/.deploy_git location /{ index index.html; try_files $uri $uri/ /index.html; } }
<二、通过端口访问>
server { listen 8888; server_name localhost; root ~; location / { index ~; try_files $uri $uri/ ~; } }
sudo systemctl restart nginx
即可通过http://yinchao/ 或localhost:8888访问。
-
前端部署的坑:
-
如果是vue等可以用
npm run build
命令打包为dis文件的,直接就可以了
-
如果是原生的html+css+javascript
就要把文件归类,html平行的就是css和js
而且nginx的配置文件要配置好
从昨天22:30到夜里1点多,再从今天早上9:20到下午1点,终于把这个原生页面部署上去了😩
-
-
-
查看文件编码
file fileName # 还可以错略通过换行符判断Windows/Unix系统
-
数据库备份和还原
备份:
mysqldump -uroot -proot databaseName > databasesName.sql;
还原的前提:必须先建立database,然后才能在其中添加数据,否则会报错
mysql -uroot -proot databaseName < databaseName.sql;
-
网络相关
-
www和不加www域名的区别:
前者是后者的子域名
后者被称为裸域名,好处是简短容易记忆,常见于个人博客等。坏处是不能把裸域设定为另外域名的别名等详情见知乎。
-
-
ls命令
-
按文件大小进行排序
$ ls -hlSa
-a: --all
-h
:–human-readable,显示人类可读的文件大小-S
:以文件大小降序方式排序-r
:–reverse,反向排序 -
按文件时间顺序排序
$ ls -hlta
-t
: sort by modification time,newest first,即按修改时间对文件进行降序排序
-
-
命令记录
-
ldd
[path]: 查看依赖库$ ldd /usr/bin/mysqld
注意要写完整路径,如果写成
$ ldd mysql
会提示mysql NOT FOUND -
LD_DEBUG=libs
[path]:LD_DEBUG 是 glibc 中的 loader 为了方便自身调试而设置的一个环境变量。
通过设置这个环境变量,可以方便的看到 loader 的加载过程,使用ldd命令可以知道程序依赖于哪些库。
在找不到这些库的时候,使用LD_DEBUG可以知道系统在哪些路径下进行了尝试
-
-
gitlab
昨天(2019.8.18)程时坤重启了 gitlab 500的错误,但是没办法用ssh克隆导致我晚上调了很久,最后发现是url不对!!!
应该是 ×××.edu.cn,结果现在的url为 ×××.edu.cn.com,然后用ssh克隆就一直提示需要使用密码。
解决办法:
# 登上服务器,获取超级用户权限 $ ssh feidian $ sudo su # 进入gitlab配置目录,进行相应配置 $ cd /etc/gitlab $ vim gitlab.rb # 发现external_url是'http://git.feidian.hzau.edu.cn.com' # 修改,把最后的.com去掉即可 # 更坑的来了,之前在网上找到的命令是 gitlab-ctl reconfigure,执行之发现刚刚修改的gitlab.rb的数据被重置了!!! # 尝试多次发现show-config才是正确的 $ gitlab-ctl show-config # 成功
-
banner
-
生成banner
-
登录前banner:
$ sudo vim /etc/issue
Manjaro Linux \r server name: (\n) user: (\l) version: (\v) OS Name:(\s) time: (\t) hard ware level: (\m)
- 登录后banner
$ sudo vim /etc/motd
___ ___ ___ ________ ________ ___ ___ ________ ________ |\ \ / /||\ \ |\ ___ \ |\ ____\ |\ \|\ \ |\ __ \ |\ __ \ \ \ \/ / /\ \ \ \ \ \\ \ \ \ \ \___| \ \ \\\ \ \ \ \|\ \ \ \ \|\ \ \ \ / / \ \ \ \ \ \\ \ \ \ \ \ \ \ __ \ \ \ __ \ \ \ \\\ \ \/ / / \ \ \ \ \ \\ \ \ \ \ \____ \ \ \ \ \ \ \ \ \ \ \ \ \\\ \ __/ / / \ \__\ \ \__\\ \__\ \ \_______\ \ \__\ \__\ \ \__\ \__\ \ \_______\ |\___/ / \|__| \|__| \|__| \|_______| \|__|\|__| \|__|\|__| \|_______| \|___|/
-
-
根据端口号直接杀死进程
fuser -k -n tcp 8099
-
获取日志中一定范围的
cat 日志 | grep -E '2018:2[0-2]:[0-9][0-9]:[0-9][0-9]'
本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 。转载请注明出处!