0%

svn cleanup

svn cleanup — 递归清理工作拷贝。

使用方法为:

1
$ svn cleanup [PATH...]

递归清理工作拷贝,删除未完成的工作拷贝锁定,并恢复未完成的操作。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。

如果,因为一些原因,运行外置的区别程序(例如,用户输入或是网络错误)有时候会导致一个svn update失败,使用--diff3-cmd选项可以完全清除你的外置区别程序所作的合并,你也可以使用--config-dir指定任何配置目录,但是你应该不会经常使用这些选项。

选项

1
--diff3-cmd CMD --config-dir DIR

例子

svn cleanup没有输出,没有太多的例子,如果你没有传递*PATH*,会使用“.”。

1
2
3
$ svn cleanup 

$ svn cleanup /path/to/working-copy

Git rm删除文件

从版本库中删除该文件,那就用命令git rm删掉,并且git commit

1
2
3
4
$ git rm file

$ git commit -m "remove file"

现在,文件就从版本库中被删除了。

如果删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

1
$ git checkout -- test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

还有一种情况是如何从版本库中删除,而不删除本地文件:

对于单个文件:

1
$ git rm --cached mylogfile.log

对于单个目录:

1
$ git rm --cached -r mydirectory

git rm和rm的区别

直接在工作区删除文件对暂存区和版本库没有影响,但是如果使用git rm命令删除文件,那么删除动作将加入暂存区,这时执行提交命令,就从真正意义上执行了文件删除。不过,不要担心,文件只是在版本库的最新提交中被删除了,在历史提交中尚在。

git push存在大文件报错

git push 时,存在大文件会报错,即使删除大文件后,还会报错。主要是因为大文件存在没有被提交的commit记录里面。

解决方案:删除有大文件的commit记录即可

1、git status 查看未被传送到远程代码库的提交状态

2、git cherry -v 查看未被传送到远程代码库的提交描述和说明

3、git reset commit_id 撤销未被传送到远程代码库的提交

移除大文件:

1
2
3
4
$ git rm --cached giant_file(文件名) 
# Stage our giant file for removal, but leave it on disk
$ git commit --amend
$ git push

Singularity 镜像无法更新

在编译的时候碰到的问题为:https://registry-1.docker.io io timeout

很明显就是国外的docker仓库无法使用,这是就需要指定国内的镜像即可解决。

如下,把下面的内容更改为国内的镜像即可。

1
From: ubuntu:16.04

修改为:

1
From: hub-mirror.c.163.com/library/ubuntu:16.04

或者

1
From: docker.mirrors.ustc.edu.cn/library/ubuntu:16.04

Git中文件的状态

1
2
3
4
$ git stash
保存工作目录和索引状态 WIP on master: b9a733eff make python3 compatible
错误:unable to create symlink filename: File name too long
错误:unable to create symlink filename: File name too long

解决方法:

1
$ git config --global core.symlinks false

chgrp高级

设置SGID属性(确保NEWGROUP组拥有所有新建的文件),设置sticky(沾滞位)属性(以免文件被拥有者以外的其他人删除)

1
$ chmod g+s,o+t /home/groupdir

具体参考SGID/SUID/SBID以及sticky的详细含义。

看看谁在连网 - netstat

.. _linux_netstat_beginner:

.. note::
不识庐山真面目,只缘身在此山中。
宋 苏轼《题西林壁》

排查“端口占着谁”“机器对外连了哪”时,老一辈工具箱里常翻出 netstat。新系统更推 ss,但文档、考试和旧机子上,netstat 仍随处可见,值得会读。

netstat 的官方定义为:

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

命令格式

1
$ netstat [选项]

常用组合:

  • -a:含监听与已建立的连接
  • -t / -u:只看 TCP / UDP
  • -n:地址端口用数字,不做反查(更快)
  • -p:带上进程(常需权限)
  • -l:只看监听
  • -r:路由表
  • -s:协议统计

看监听端口

1
$ netstat -tuln

-tuln 是高频口头禅:TCP+UDP、监听、数字显示。输出里 Local Address 的端口就是服务挂着的地方。

看连接并带上进程

1
$ sudo netstat -tnp

-p 能帮你对上“这个 ESTABLISHED 到底是哪个程序”。没有权限时进程列可能是空的。

瞄一眼路由

1
$ netstat -rn

默认网关、网段怎么走,旧习惯会来这里看一眼;现在也可以用 ip route

netstat 在部分发行版已标为过时,新环境优先学 ss -tuln;但看见同事敲 netstat -anp,你至少知道他在干嘛。

Windows定时关机

使用Win+R呼出运行对话框,输入一下命令即可:

1
$ shutdown -s -t xxxx

其中xxxx为希望的秒数,比如shutdown -s -t 60 将在60秒即1分钟后关机。

取消关机

可以输入shutdown -a取消关机

Windows下使用Ubuntu

目前Ubuntu20.04和18.04可用,可以在Microsoft Store直接安装。

启动ubuntu报错 参考的对象类型不支持尝试的操作

解决方法如下: 以管理员身份打开Windows PowerShell, 然后执行netsh winsock reset, 重启电脑即可解决。

Win10中Vmmem程序资源占用过高解决办法

有个叫做Vmmem程序占用不少资源,此时可能是wsl引起的问题,解决方法为,在推出wsl以后,需要通过以下命令来shutdown

1
wsl --shutdown	

xfs文件系统无法mount

首先阐述一下碰到的问题,N年前做了一个高速记录系统,使用的为CentOS6.8的稳定系统,
在备份机上做了同样的系统,最近可能强迫症所致,更新了一下,导致软件版本不一致,
引起了文件系统无法挂载。

详细的信息如下:

1
2
3
4
5
# mount /dev/sdb /data/
mount: wrong fs type, bad option, bad superblock on /dev/sdb,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

查看一下日志,可以看到如下信息:

1
2
3
# dmesg | tail
XFS (sdb): bad version
XFS (sdb): SB validate failed

妥妥滴xfs的版本问题引起的无法挂载。

再深一步进行挖掘,自行创建一个xfs的文件系统进行分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# dd if=/dev/zero of=/var/tmp/dddddd.img bs=1024k seek=10240 count=1
记录了1+0 的读入
记录了1+0 的写出
1048576字节(1.0 MB)已复制,0.00263831 秒,397 MB/秒

# losetup /dev/loop0 /var/tmp/dddddd.img
# mkfs.xfs /dev/loop0
meta-data=/dev/loop0 isize=256 agcount=4, agsize=655424 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=2621696, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# echo "version" | xfs_db /dev/loop0
xfs_db> version
versionnum [0xb4a4+0xa] = V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT
xfs_db> # xfs_db /dev/loop0
xfs_db> version
versionnum [0xb4a4+0xa] = V4,NLINK,ALIGN,DIRV2,LOGV2,EXTFLG,MOREBITS,ATTR2,LAZYSBCOUNT
xfs_db> quit

可以从versionnum [0xb4a4+0xa] 知道此时的版本为V4 或者-V参数知道此时安装xfs版本为3.1.1。

查看xfs版本

1
# mkfs.xfs -V