Linux基础
https://packages.ubuntu.com/source/focal/slurm-llnl
https://salsa.debian.org/hpc-team/slurm-wlm
https://redketchup.io/icon-converter
http://c.biancheng.net/view/2804.html
https://github.com/mknoxnv/ubuntu-slurm/issues/12
https://dmerej.info/blog/post/symlinks-and-so-files-on-linux/
Linux主机通过Windows虚拟机转发Easyconnect内网请求
常用命令
apt-cache show tcl | grep -i version
sudo snap install onlyoffice-desktopeditors
orce_color_prompt=yes
sudo pkill Xorg 或者 sudo restart lightdm
, GUI卡住du -sh .[!.]*
, 查看隐藏文件大小,jobs -l
选项可显示所有任务的PIDfg %jobnumber
(是命令编号,不是进程号)将选中的命令调出 ,将后台中的命令调至前台继续运行bg %jobnumber
将一个在后台暂停的命令,变成在后台继续执行- kill
- 通过jobs命令查看job号(假设为num),然后执行
kill %num
- 通过ps命令查看job的进程号(PID,假设为pid),然后执行
kill pid
- 前台进程的终止:
Ctrl+c
- pkill -kill -t pts/2
- pkill -u ttlsa
- 通过jobs命令查看job号(假设为num),然后执行
find . -type f -exec dos2unix {} \;
转换dos到unixfind . -ok COMMAND {} \
对查找的文件执行COMMAND命令(需要用户确认)find . -exec COMMAND {} \
enca -L zh_CN -x utf-8 *
转换文件编码file *
查看文件编码unset all_proxy && unset ALL_PROXY
取消所有 socks 代理- find . -name "*csv.gz" | xargs -i mv {} annotations/
- sudo cat /etc/passwd | cut -f 1 -d : | xargs -I {} sudo crontab -u {} -l
https://blog.csdn.net/sinat_38816924/article/details/109828767 - cat hisat2.sam| grep -v '^@' | cut -f1 | uniq| wc -l
ps -ef|grep aaa|grep -v grep|awk '{print "kill -9 " $2}' |sh
renice -20 -p 1110 (将一个进程号为1110的进程提高到最有利于其得到调度的nice值,-20为使得进程最易得到调度机会的nice值)
git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地。
git rm -r --cached dir1 删除dir1目录,并保留在本地。
git rm --f readme1.txt 删除readme1.txt的跟踪,并且删除本地文件。
代理
http_proxy=192.168.10.91:3128 # 分别指定http、https、ftp协议使用的代理服务器地址
https_proxy=192.168.10.91:3128
ftp_proxy=192.168.10.91:3128
no_proxy=192.168.10.0. # 访问局域网地址(192.168.20.0/24网段)时不使用代理,可以用逗号分隔多个地址
export http_proxy https_proxy ftp_proxy no_proxy
安装错误
wy@wy-desktop:~$ sudo apt install subtitlecomposer
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 11316 (unattended-upgr)
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 11316 (unattended-upgr)
解决
wy@wy-desktop:~$ sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unattende 11316 root 10uW REG 259,3 0 28967805 /var/lib/dpkg/lock-frontend
wy@wy-desktop:~$ ps aux | grep 11316
root 11316 16.1 1.0 369720 165088 ? Sl 09:54 3:19 /usr/bin/python3 /usr/bin/unattended-upgrade
wy 53219 0.0 0.0 17864 2668 pts/2 S+ 10:14 0:00 grep --color=auto 11316
防火墙
- sudo firewall-cmd --list-ports
- firewall-cmd --add-port=223/tcp
- sudo ufw status
- sudo ufw disable
- sudo ufw enable
- sudo ufw allow 81
- sudo ufw deny 81
并行管理软件
- sinteractive --cpus-per-task=24 --mem=120g module load subread featureCounts -p -T 24 -t exon -g gene_id -agenes.gtf -o P11_AM_Left_BAL_6h.txt P11_AM_Left_BAL_6h.Aligned.sortedByCoord.out.bam
- SchedMD slurm
- rush
- parallel
在Linux中查看线程数的三种方法
1、top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
2、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
3、ps -mp
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
IO重定向
>
覆盖输出重定向>>
追加输出重定向2>
/2>>
错误输出重定向- cat 2> a.out
&>
/&>>
合并错误输出流和正确输出流- cat /xxx/xx >> /tmp/xx 2>&1
cat > a.txt <<END xxx END
Here Documenttr [a-z] [A-Z] < /xxx
将xxx中的小写转换为大写tr -d [abc] < /xxx
删除xxx中的abc字符- 特殊设备
/dev/null
, 将数据丢弃 nohup /root/runoob.sh > runoob.log 2>&1 &
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中
快捷键
ctrl+c 结束正在运行的程序【ping、telnet等】
ctrl+d 结束输入或退出shell
ctrl+s 暂停屏幕输出
ctrl+q 恢复屏幕输出
ctrl + z:可以将一个正在前台执行的命令放到后台,并且处于暂停状态
ctrl+ shift + E English
常用程序的命令
evince
xdg-open
ego
shell 编程
- shell的更换
cat /etc/shells # 所有shell
echo $SHELL # 当前shell
chsh -s /bin/zsh
chsh -s /bin/bash
chsh -s其实修改的就是/etc/passwd文件里和你的用户名相对应的那一行
&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。
||则与&&相反。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了||那么就执行这个命令。
ssh免密登录
- 生成本地电脑的密钥对
ssh-keygen
- 添加生成公钥到服务器授权文件
.ssh/authorized_keys
ssh-copy-id -i .ssh/id_rsa.pub root@0.0.0.0 # 你的服务器地址
线程与进程
线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的IPC(进程间通信)通道。这些功能让线程在并发执行时成为一个高效的机制。
在Linux中,程序中创建的线程(也称为轻量级进程,LWP)会具有和程序的PID相同的“线程组ID”。然后,各个线程会获得其自身的线程ID(TID)。对于Linux内核调度器而言,线程不过是恰好共享特定资源的标准的进程而已。经典的命令行工具,如ps或top,都可以用来显示线程级别的信息,只是默认情况下它们显示进程级别的信息
- 查看线程下进程数
ps -hH -p 824 | wc -l
ps -T -p <pid>
top -H
网络
- Linux开启路由转发功能
- 临时生效
echo "1" > /proc/sys/net/ipv4/ip_forward
- 永久生效
/etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p # 立即生效
ffmpeg的使用
剪切视频
使用 -ss 和 -t 选项,从第0秒开始,向后截取31秒视频,并保存
ffmpeg -ss 00:00:00 -i video.mp4 -vcodec copy -acodec copy -t 00:00:31 output1.mp4
从第01:33:30 开始,向后截取 00:47:16 视频,并保存
ffmpeg -ss 01:33:30 -i video.mp4 -vcodec copy -acodec copy -t 00:47:16 output2.mp4
合并视频
把剪切得到的两个视频合并成一个视频
使用 TS格式拼接视频
先将 mp4 转化为同样编码形式的 ts 流,因为 ts流是可以 concate 的,先把 mp4 封装成 ts ,然后 concate ts 流, 最后再把 ts 流转化为 mp4。
ffmpeg -i output1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output1.ts
ffmpeg -i output2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output2.ts
为了减少命令的输入,需要一个filelist.txt文件,里面内容如下
file 'output1.ts'
file 'output2.ts'
合并视频命令
ffmpeg -f concat -i filelist.txt -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
视频压缩
ffmpeg -i "七月算法 概率面试题精讲.flv" -r 10 -b:a 32k 1.mp4
视频流
rtsp://admin:password@192.168.0.100
软件包管理
https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu/README.html
查找版本号
apt-cache show nginx | grep -i version
搜索软件
sudo apt-cache search r-base-core
shell命令
source filepath 与 sh filepath 、./filepath的区别:
-
当shell脚本具有可执行权限时,用sh filepath与./filepath是没有区别的。./filepath是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
-
sh filepath 会重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell是新建的,其改变的变量不会被带回父shell,除非使用export。
-
source filename其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
GUI
客户端(也就是各种软件)将绘图请求发给服务端,服务端操纵显卡或视频终端把位图图像绘制出来,并处理键盘鼠标的事件,发送给客户端.注意,和人交互的是服务端.
https://www.jianshu.com/p/94be015e3052
http://www.360doc.com/content/14/0926/16/5470123_412525297.shtml
Qt、GTK 和KDE、GNOME的关系
GTK,GTK+, Qt是图形界面开发库(GUI Toolkit),用户可以使用这些开发库编写GUI应用,其中GTK+是GTK的升级版。
KDE,GNOME,Unity是linux下的桌面环境(Desktop Environment),其中KDE使用Qt开发,GNOME使用GTK+开发。桌面环境一般具有一组实用程序,窗口管理器和设计规范来创建统一的桌面。Unity是Canonical公司基于GNOME开发的一个桌面环境,它使用了GNOME的一些实用程序(Nautilus, RhythmBox等),并用于Ubuntu操作系统。
简单来说:为了方便开发人员编写X clients,就有了Xlib来封装X协议;Xlib还不够方便,于是就有了qt和gtk,它们提供了很多窗口控件(widgets)。为了方便用户 ,就出现了gnome和kde等桌面管理系统。一般来说,linux用户看到的界面就是其中之一了。gnome用的是gtk库,kde用的是qt库
实验
- 进入命令行
init 3
- 启动图形化
startx
ctrl+alt+backspace
返回字符界面xinit
打开XTERM,不能移动,但是可以打开程序mozilla
用startx起动图形界面的时候同时也启动了一个WM(即窗口管理器),如果你用KDE就起动了KDE,如果你用GNOME就起动了GNOME.但是你用xinit起动图形界面的时候却没有起动WM. 窗口管理器作用就是最大化,最小化,移动,关闭窗口等.而这些不是X服务器来负责完成的.
- 如果你不输入twm而输入gnome-session就可以起动GNOME,或者输入startkde起动KDE.
Vim
①先使用 gg 命令使光标回到第一行
②shift+v 进入可视模式
③shift+g 全选
④按下 = 即可
SSR
https://xugaoxiang.com/2020/01/08/ssr/
sudo apt-get install shadowsocks
sslocal -s 服务器IP -p 服务器端口 -l 本地端口 -k 本地密码 -m 加密方式
sslocal -s 192.168.1.1 -p 8080 -l 1080 -k mima -m aes-256-cfb
Ubuntu
https://www.debian.org/doc/manuals/maint-guide/
- ubuntu apt document
/var/lib/apt/lists/
使用apt-get update命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录/var/lib/dpkg/available
文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 ubunt 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包./var/cache/apt/archives
目录是在用 apt-get install 安装软件时,软件包的临时存放路径/etc/apt/sources.list
存放的是软件源站点dpkg -L <package_name>
查询系统中已安装的软件包所安装的位置.dpkg -r
卸载软件包.不是完全的卸载,它的配置文件还存在.apt-cache show <package_name>
查询已安装的包的详细信息dpkg -I hello_1.0-1_amd64.deb
查询deb包的详细信息
software
- 安装transmission-daemon
sudo apt-get install transmission-daemon
- 设置用户名和密码并打开远程连接
- 打开文件vim /var/lib/transmission-daemon/info/settings.json
+ 将rpc-password和rpc-username修改为自己的用户名和密码
+ 将rpc-whitelist-enable设置为false - 登录transmission:本机在浏览器中输入localhost:9091,远程在浏览器中输入http://ip:9091(ip为安装transmission机器的ip)
后台运行
使用 ctrl + z 把这个命令挂起(Suspend)
使用 jobs 命令查看后端命令,只是你会发现这个命令是 stopped 状态
使用 bg %N (注意,这个N是对应的编号),让这个命令后端执行
再次使用 jobs 命令查看,发现那个命令的状态就变为 running 了,就是已经是后台执行了
使用 disown -h %N,使这个进程运行在新的会话里,从而成为不属于此终端的子进程
exit正常退出这个终端
FTP安装
sudo apt-get install vsftpd
sudo systemctl status vsftpd
vim /etc/shells
{
"key": "ctrl+enter",
"command": "workbench.action.terminal.runSelectedText",
"when": "editorTextFocus && editorHasSelection"
}
输入法
https://blog.csdn.net/small_wu/article/details/125072454
linux 管道 减号,linux shell环境减号”-”的用途
https://blog.csdn.net/weixin_42584507/article/details/116927599
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。
被动模式只需要服务器端开放端口给客户端连接就行了。
https://blog.csdn.net/zxw136511485/article/details/79460671
https://blog.csdn.net/weixin_44901564/article/details/108059263