linux运行批处理文件(bat)
bat是批处理文件,在windows和linux上都可以使用。
不过在linux的命令行中不可以直接敲"xxx.bat",系统会去找所有的命令。
想要调用bat文件,需要写绝对路径,比如"/home/myDir/xxx.bat",或者是切换到bat文件所在的目录,然后键入:"./xxx.bat".这里的"./"是告诉系统在当前目录下找名为"xxx.bat"的文件执行。
在bat文件中不可以使用windows特有的命令。
在执行bat文件之前,确保bat文件的权限是可执行的,如果没改权限的话,很有可能会报错误:Permission denied.更改权限的方式请自己查询"chmod"命令的使用方法.
注意:
其实这种方法不止是bat文件,各种可执行文件都可以以这种方式运行。
端口问题
有的时候,端口会被占用,导致一系列问题,比如:
clash端口显示为0,导致代理失败。这可能是因为clash的进程没有结束,导致端口一直被占用。当然这只是其中一种情况,其他的情况请自行百度。这种问题的解决方式如下:
1.查看当前所有端口(已知端口的话这步可以跳过)
代码语言:bash复制netstat -nultp
指令结果中端口为listen即被占用。
2.查看自己的端口有没有被占用
代码语言:bash复制# 查看7890端口是否被占用
netstat -anp |grep 7890
没有LISTEN那一行,所以就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了。
在Linux 上的 /etc/services 文件可以查看到更多关于保留端口的信息。
3.找到对应端口在系统中的进程ID(PID)
代码语言:bash复制lsof -i :7890
4.结束进程
代码语言:bash复制kill -9 [PID]
注意:有的时候电脑端没用,但手机端或者平板端正常。可能有以下原因:
- 电脑端节点链接没更新
- 浏览器安装有代理插件
- 没有打开系统接口
- 如果上面的都没有问题,那么可以尝试打开tune模式,有网后再关掉tune即可(有点玄学,还不清楚是为什么)
xshell使用技巧
快捷键 | 功能 |
---|---|
ctrl insert | 复制 |
shift insert | 粘贴 |
shift/ctrl table | 快速切换打开的tab |
参考链接
Xshell不能使用退格、删除键的解决方案
解决方法:设置xshell,文件–>打开—>属性–>终端 -->键盘 把delete 和backspace序列改为 ASCII 127即可。
不想设置可以通过ctrl backsace实现删除
xshell修改快捷键
参考链接
linux下运行.m文件
进入m文件所在目录后,运行
代码语言:bash复制$ matlab -nodesktop -nosplash -r matlabfile
只用文件名matlabfile,不能添加.m
第二种方式
可以用xmanger
远程显示界面,但画图可能会报错:
MATLAB has experienced a low-level graphics error, and may not have drawn correctly.
Read about what you can do to prevent this issue at Resolving Low-Level Graphics Issues then restart MATLAB.
这是因为显卡不支持,解决办法:
在matlab的命令框中输入
代码语言:bash复制opengl('save','software')
重启matlab即可
第二种方式延迟比较高
注:linux系统下matlab快捷键与windows不同。
后台运行.m文件
与python不同,matlab相对来说麻烦一点
代码语言:bash复制nohup matlab <test2.m> fill.out &
<
指向python,>
指向要输出的日志文件,可以没有。即:
nohup /usr/matlab/bin/matlab <fill.m> &
上面这个也没有将matlab写入环境变量的情况。
参考博客
linux如何修改文件内容
以修改index.php文件为例,其他文件类似(例如py文件,m文件等)
1、使用快捷键打开终端命令行模式。
2、输入以下命令进入index.php文件并按下“i”键进入编辑模式。
代码语言:bash复制vim index.php
3、修改完之后,通过“Esc键” “:wq”保存退出即可。
查看特定进程
Linux系统是一个强大的操作系统,它可以运行很多有用的进程,从而为用户提供充分的功能服务。有时用户可能想要查找特定进程,这意味着用户需要知道该进程的名称、PID和其他信息。本文将介绍在Linux系统中寻找特定进程的方法。
首先,在Linux系统中使用ps命令查找特定进程。例如,可以使用ps -ef | grep 进程名称 命令来查找特定进程。该命令支持正则表达式,可以模糊匹配特定进程,并显示该进程的PID、用户ID等信息,以下是该命令的示例:
代码语言:bash复制$ ps -ef | grep apache2
root 2890 1 0 2017 ? 03:45:41 /usr/sbin/apache2 - k start
linux磁盘空间对不上
发现,Used和Avail加起来不够Size,莫名被吃掉一部分
其实这是Linux文件系统的一种安全策略,它默认会为root用户保留5%的磁盘空间,留作紧急情况使用。这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash
我们可以通过tune2fs修改预留空间的比例
代码语言:bash复制tune2fs -m 1 /dev/vda1
linux下安装matlab的一些问题
linux下安装好后可能会出现matlab无法连接到mathwork,解决方法:重新安装mathwork
下载链接
执行以下命令安装就行
代码语言:bash复制./mathworksservicehost_2023.3.0.6_glnxa64_installer.bin
但执行matlab一段时间后,不知道为什么会闪退,报错信息Segmentation fault (core dumped)
,现在这个错误莫名其妙没有了。
断开xshell时程序依然执行:screen
GNU Screen一款由GNU计划开发的用于命令行终端切换的软件,可以当做窗口管理器的命令行界面版本。只要Screen本身没有被终止,在其内部运行的会话都可以恢复,特别适合执行一些运行时间长的任务。
安装screen工具。
Linux系统默认没有screen工具,需要先进行安装。
CentOS系列系统安装命令如下所示。
说明 CentOS 6与CentOS 8操作系统版本结束了生命周期(EOL),按照社区规则,CentOS 6/8的源地址内容已移除。当您在CentOS 6/8系统内继续使用默认配置的源地址时会发生报错。建议您先切换CentOS 6/8的源地址,然后再进行操作。具体操作,请参见CentOS 6 EOL如何切换源?和CentOS 8 EOL如何切换源?
代码语言:bash复制yum install screen
Ubuntu系列系统安装
代码语言:bash复制sudo apt-get install screen
执行如下命令,创建screen窗口。
代码语言:bash复制screen -S [$Name]
执行如下命令,列出screen窗口。
代码语言:bash复制screen -ls
当需要运行脚本、执行程序时,在命令前添加screen即可。
同时按Ctrl a d键,就可以退出SSH登录,但不会影响screen程序的运行。
需要继续工作时,登录实例,然后执行如下命令,恢复会话即可。
代码语言:bash复制screen -r -d
示例
第一种:screen命令,需要安装
yum install screen
#安装
screen -S new1
#开启一个new1的screen
执行一些命令,然后中断ssh,直接关闭
然后又ssh重新登录进去
screen -r new1
#可以看到依然在的
解决screen状态为Attached连上不的问题
screen -ls
#列出screen
screen -D -r <session-id> #-D -r
先踢掉前一用户,再登陆
screen -ls
#查看所有screen会话
按键盘上面的Ctrl a,然后再按d #保存当前的screen会话
exit
#退出screen
screen -wipe new1
#删除会话
保留screen做法: 先按ctrl a,再按d,exit是直接退出screen新建窗口
screen -X -S quit
断开xshell时程序依然执行:nohup
nohup
直接执行
代码语言:bash复制nohup python3 main.py
查看服务运行日志 tail -f nohup.out
& 表示后台运行
将输出放到 main.log 文件中
代码语言:bash复制nohup python3 main.py > main.log
查看应用运行进程
代码语言:bash复制ps -ef |grep python
代码语言:bash复制jobs -l //查看任务,返回任务编号n和进程号
bg %n //将编号为n的任务转后台运行
fg %n //将编号为n的任务转前台运行
ctrl z //挂起当前任务
ctrl c //结束当前任务
关闭进程
kill -9 进程号
代码语言:bash复制kill -9 6189
在执行命令nohup sh xxx.sh &的时候,提示
nohup: ignoring input and appending output to `nohup.out’
意思是 :忽略输入并将输出附加到`nohup.out’
程序也能正常启动。
如果不想看到这个提示可以使用:
nohup sh xxx.sh >a.log 2>& 1 &
或者
nohup sh xxx.sh &>a.log &
如果不想输入到a.log 可以使用
nohup sh xxx.sh >/dev/null 2>& 1 &
其中:
nohup放到命令开头表示不挂起,表示即使退出终端该进程也不会掉, & 放在命令到结尾,表示后台运行
/dev/null 表示空设备文件 (位桶(bit bucket)或者黑洞(black hole)的地方)
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
2>&1标识将错误输出重定向到标准输出,注意>& 不能分开
为用户增加sudo权限(修改sudoers文件)
在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。在使用sudo命令的过程中,我们经常会遇到当前用户不在sudoers文件中的提示信息,如果解决该问题呢?通过下面几个步骤,可以很简单的解决此问题。
1、切换到root用户权限
代码语言:bash复制Last login: Tue Sep 24 20:50:51 2013 from 192.168.30.171
[user@Compile ~]$ su root
password:
[root@Compile user]#
2、查看/etc/sudoers文件权限,如果只读权限,修改为可写权限
代码语言:bash复制[root@Compile user]# ls -l /etc/sudoers
-r--r-----. 1 root root 4030 9月 25 00:57 /etc/sudoers
[root@Compile user]# chmod 777 /etc/sudoers
[root@Compile user]# ls -l /etc/sudoers
-rwxrwxrwx. 1 root root 4030 9月 25 00:57 /etc/sudoers
[root@Compile user]#
执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:
代码语言:bash复制root ALL=(ALL) ALL
#在后面一行加上
user ALL=(ALL) ALL
说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)
4、保存退出,并恢复/etc/sudoers的访问权限为440
代码语言:bash复制[root@Compile user]# chmod 440 /etc/sudoers
[root@Compile user]# ls -l /etc/sudoers
-r--r-----. 1 root root 4030 9月 25 00:57 /etc/sudoers
[root@Compile user]#
5、切换到普通用户,测试用户权限提升功能
代码语言:bash复制su username
sudo su
Linux忘记账户密码(虚拟机)
关于 虚拟机下 Redhat7版本 root用户密码忘记的解决方法
一、开机
二、出现这个不用管,点取消(没有出现也是正常的)
三、出现这个,键盘敲e进入编辑
四、鼠标移动到最下,在UTF-8后,写rd.break,然后 ctrl x 进入到下一个环节
五、等待出现命令行
六、按顺序敲如下命令:
七、注意此时的命令前缀已经不同,输入命令,修改密码
八、注意输入上个命令后,会在几个小方格后停顿一下,也就是输入第一次密码(有可能也不会出现小方格乱码,按照提示进行即可)
重复密码,也是在下一行方格后停顿。
注意:密码输入皆不显示。自己注意输入正确即可
九、出现passwd后面接一串方格,就说明改完了。接着输入下列命令
十、最后等待,重启就好(时间有点长)。出现登录画面,ok,你就可以通过root的新密码登录了(但该机有点问题,重启报错,下次登录就会发展密码已经修改完成:账号名为root)
普通用户忘记密码
解决方法较为简单,使用超级用户身份登录后,修改普通用户的密码
代码语言:bash复制passwd username ##username为需要配置的用户名称
如下所示:
代码语言:bash复制[root@localhost ~]# passwd miya
Changing password for user miya.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
参考文章1,文章2