man pkg
which   Query the database for package(s) that installed a specific file.

pkg which /usr/local/lib/libicuio.so.58
/usr/local/lib/libicuio.so.58 was installed by package icu-58.2_2,1

#pkg which /usr/local/bin/openssl
/usr/local/bin/openssl was installed by package openssl-1.0.2l,1

来自:https://www.howtoing.com/pkg-command-examples-to-manage-packages-in-freebsd


附:从Ports存储库本地下载软件包
为了从Ports存储库本地下载软件包,而不在系统上安装软件包,请使用fetch开关运行pkg命令 。

下载的软件包二进制文件是压缩的.txz文件,可以在/ var / cache / pkg / system路径中找到。

# pkg fetch package_name
freebsd添加lib搜索路径的方法:
(1) 添加到LD_LIBRARY_PATH,这个多数人都知道了,坏处是传递的时候容易被砍掉,如apache
(2) ld.so.conf,设置了完全没用,不要试这个。。。
(3) ldconfig -m PATH,一次加载一次有效
(4) 修改/usr/local/libdata/ldconfig/,例如mysql,可以建一个文件/usr/local/libdata/ldconfig/mysql
内容是(假设装到了/usr/local/mysql):
/usr/local/mysql/lib/mysql
然后/etc/rc.d/ldconfig restart就行了

FreeBSD修改可执行文件路径和库文件路径
1、库文件路径修改:
FreeBSD和linux不是一样的。
在/etc/下加入ld-elf.so.conf里面写上你的目录,比如/usr/local/samba/lib,没有的话创建一个。
然后
sudo /etc/rc.d/ldconfig restart
or
/etc/rc.d/ldconfig forcerestart
好了,查看库文件路径
# ldconfig -r
# ldconfig -r | less
或者/etc/rc.conf里加ldconfig_path="",这是系统起来的时候再设置的。

2、可执行文件路径修改:
 
在用户目录下面,比如/root或者/home/ztz0223下面,打开.cshrc文件,修改set path部分:
# $FreeBSD: release/9.1.0/share/skel/dot.cshrc 242850 2012-11-10 06:05:04Z eadler $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
# more examples available at /usr/share/examples/csh/
#
alias h          history 25
alias j          jobs -l
alias la     ls -aF
alias lf     ls -FA
alias ll     ls -lAF

# A righteous umask
umask 22

set path =
(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)

修改上面set path比如:
set path =
(/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin
/usr/local/samba/bin $HOME/bin)



来自:https://www.xuebuyuan.com/1082615.html
https://www.cyberciti.biz/faq/freebsd-ldconfig-v-lost-dynamic-linker-configuration/
一、原理
Beyond Compare每次启动后会先检查注册信息,试用期到期后就不能继续使用。解决方法是在启动前,先删除注册信息,然后再启动,这样就可以永久免费试用了。

二、下载
首先下载Beyond Compare最新版本,链接如下:https://www.scootersoftware.com/download.php


三、安装
下载完成后,直接安装。

四、创建BCompare文件
1.进入Mac应用程序目录下,找到刚刚安装好的Beyond Compare,路径如下/Applications/Beyond Compare 2.app/Contents/MacOS。
2.修改启动程序文件BCompare为BCompare.real。
3.在当前目录下新建一个文件BCompare,文件内容如下:
/Applications/Beyond Compare 2.app/Contents/MacOS/BCompare
#!/bin/bash
rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat"
"`dirname "$0"`"/BCompare.real $@
4.保存BCompare文件。
5.修改文件的权限:
chmod a+x /Applications/Beyond Compare 2.app/Contents/MacOS/BCompare
以上步骤完成后,再次打开Beyond Compare就可以正常使用了,enjoy it。
转自:https://blog.csdn.net/wu__di/article/details/82390196
mac查看当前调用tcp的进程并关闭指定进程:
一)查看本机macbook打开的端口:
lsof -iTCP -sTCP:LISTEN
MotionPro  2766 jackXiang   16u  IPv4 0xc8299b5de6c3cc43      0t0  TCP localhost:60012 (LISTEN)
Adobe\x20  2858 jackXiang   13u  IPv4 0xc8299b5dea54da73      0t0  TCP localhost:15292 (LISTEN)
com.docke  2890 jackXiang    8u  IPv4 0xc8299b5dea125b5b      0t0  TCP localhost:56199 (LISTEN)
phpstorm   2918 jackXiang  186u  IPv4 0xc8299b5dea91527b      0t0  TCP localhost:6942 (LISTEN)
phpstorm   2918 jackXiang  362u  IPv4 0xc8299b5deaa2a8b3      0t0  TCP localhost:63342 (LISTEN)

二)查看连接远程端口:
lsof -iTCP -dTCP:LISTEN
lsof -iTCP -dTCP:LISTEN|grep Google   #查看google浏览器连接的端口
safara进程:
/System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
  502 57037     1   0 11:42上午 ??         0:06.24 /System/Library/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent
#lsof -p 2072  #PID
php-fpm 2072 root  DEL       REG                0,5               22380 /dev/zero
php-fpm 2072 root    0u      CHR                1,3       0t0      7732 /dev/null
php-fpm 2072 root    1u      CHR                1,3       0t0      7732 /dev/null

查看:



ps -o 'pid,ppid,pgid,sid,comm' -C nohup
  PID  PPID  PGID   SID COMMAND
7478 32279  7478 32251 nohup

cat nohup.c

make nohup
cc     nohup.c   -o nohup


#ps -C nohup s
  UID   PID          PENDING          BLOCKED          IGNORED           CAUGHT STAT TTY        TIME COMMAND
    0  2072 0000000000000000 0000000000000000 00000000000000001 0000000180014a06 Ss   ?          0:07 php-fpm: master process (

屏蔽了SIGHUP,终端关闭的时候,会忽略终端发送的SIGHUP信号,继续运行服务。

#kill -l
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

IGNORED           0000000000001000

来自:https://mp.weixin.qq.com/s/hMXwg9yUSN8rC12HeVp2RA
解决方法有三种:

1、当CPU数超出终端大小不多时,可以通过ALT + Enter 最大化当前窗口(SecureCRT客户端时);

2、mpstat -P ALL

3、sar -P ALL

方法1一般不会有效果。这里主要说要方法2和方法3。
接下来我要说的是用top命令,按数字1键,查看CPU各个核心使用情况,提示:Sorry, terminal is not big enough。
在此之前的服务器2颗6核CPU,开启超线程24。当我们遇到这个情况的时候,用Alt +Enter最大化终端窗口就Ok了[SecureCRT软件]。
现在的服务器2颗8核,超线程32核,此时,再用Alt +Enter最大化终端窗口[SecureCRT软件],Sorry, terminal is not big enough
没办法了吗?网上说用putty,上次我匆匆试了一下,没有搞定,就另想它法了,linux系统的开源人,为我提供了许多好用的命令,

mpstat命令,结合一些参数,如下:

mpstat命令详解:
http://www.bdkyr.com/view.php?id=73

mpstat -P ALL
#执行结果如图


有人问了,可以看,但是不实时呀。别急,还有呢,再加点参数:

mpstat -P ALL 2 1000

这样就可以搞定了,不信你找一台2路8核的服务器,试试,很有效果的,shell搞的话,可以自己弄个更强大,更人性化的实时查看工具。

来自:http://www.361way.com/terminal-big-enough/4514.html
使用安装包安装的phpstrom无法正常启动,原因是原默认wwwroot是 /data/www,现在系统禁用了对根目录的使用所以只能将dbpath指向到自定义目录,如
将原来的目录迁移到/var/data,在/data下面做软链接即可,原来的升级备份位置在哪儿?
系统升级完成后桌面会出现一个目录 迁移的项目 将这个目录下的/data/db 下的文件拷贝到新的dbpath就可以了。
原文链接:https://blog.csdn.net/StillCity/article/details/102562281


二)如何做软链接?ln -sf /var/data /data
在这次mac升级系统后,我发现我的/data目录消失了,于是我执行了命令:

mkdir /data
结果发现居然提示我Read-Only filesystem,即使加上了sudo也没用

在我查阅相关资料后找到了解决办法(关闭SIP,然后输入sudo mount -uw /,创建文件夹添加权限,最后启用SIP),具体步骤如下:

1、重启mac,按住Command+R,等到系统进入安全模式。

2、选择一个账户,然后点击屏幕上方的工具栏找到命令行工具。

3、执行,命令 csrutil disable

4、重启电脑后,不要进入安全模式,执行命令sudo mount -uw /

5、执行命令sudo mkdir /data

6、执行命令sudo chmod 777 /data

7、重启电脑,进入安全模式,执行命令csrutil enable (开启SIP)
原文链接:https://blog.csdn.net/weiyoushi4001/article/details/102928575

大体运行命令:



背景:我一看这文章就知道是架构平台部的兄弟的操作性更大一些,谁投的稿不清楚,但这个操作能感受到浓浓的鹅厂气息,这些年过去了,系统底层依然没有大变化,估计这些操作还能再用上十年,特梳理总结,以便“后来人”,也包括自己备忘。女程序员少,会写VIM、GDB、Linux命令、正则表达式、Makefile的女程序员妹子简直就是至宝啊,尽管ls –lhS ,中间横写得不对,但这不是重点,正是留言的好机会,请年轻程序员男好生把握,哥也年轻过,别后悔莫及,机会就让给你们了,哈哈。

1)磁盘满了查看/一级目录的报警:
du -h --max-depth=1


2)将当前目录下各文件以从大到小的顺序进行展示:
ls -lhS


3)查看日志最近200行:
history | tail -n 200


4)top cpu内存排序:
top 命令的基本视图中,按数字 1 监控每个逻辑 CPU 的使用情况;按 P 实现按 CPU 降序排列,按 M 按内存降序排列。

5)编写的二进制代码推到后台监听端口9999:
nohup xxx 9999

6)查看程序开启的端口:
netstat -anp | grep -w 9999

7)tcpdump抓自己开发的服务器server并调试,学后面的正则匹配:
tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

8)对日志某些列判断性打印:
awk '-F,' '{if ($666==110) print $999}' xxx.log.20191212

9)动态链接没有加载文件:
lsof xxx.so  #进程加载的一个外部 so 动态库对应功能并没有生效
GDB 调试时发现,该 so 并没有导出函数 fffff 。
nm -D xxx.so | grep fffff

10)停掉了测试进程 xxx:
ps aux | grep -w xxx| grep -v grep | awk '{print $2}' | xargs kill -9

11)并没有导出函数 fffff ,证实了该 so 确实没有导出该函数。
nm -D xxx.so | grep fffff

来源自vimer、女程序员说:https://mp.weixin.qq.com/s/WsWFcw-xoRTFOcz1TQqDBw
#ls -i
24229218 go  805308641 -w,

这样删不掉:
#rm -i 805308641
rm: cannot remove ‘805308641’: No such file or directory


这样删才行:
find ./* -inum 805308641 -delete


来自:https://blog.csdn.net/wb736/article/details/79756956

Macbook:
find ./* -inum 1442584 |xargs rm -f #样例,使用find和xargs结合删除ddd文件(无法使用-i参数进行删除确认)
mac本下实践Ok如下:
echo  `find ./* -inum 22266353 `
./-p
rm -f  `find ./* -inum 22266353 `   #成功删除

find ./* -inum 22266353 -exec rm -i {} \;
rm: ./-p: is a directory
find ./* -inum 13287477 -exec rm -r -i {} \;   #成功删除
remove ./~? y
现象:init 0 关闭系统 出现错误提示,阿里专有云的运维兄弟反馈说是没有完全关闭:
再登录下:runlevel  ,说是操作系统bug。
来自:https://developer.aliyun.com/ask/107789?spm=a2c6h.13159736
macOS 升级到 Catalina之后,使用SecureCRT报如下错误

The permissions on the "/cores" directory need to be changed to
include write permission for "other".

Please execute (or ask an admin to execute) the following from a
terminal window:

sudo chmod go+w /cores

If you would prefer not to change the permissions on the /cores
folder, you can turn off the Global option "Create core file when
application crashes".



应该是macOS的权限控制严格了,导致CRT没有权限访问/cores文件夹,这里关掉CRT崩溃时创建core转储文件即可(实践发现:这个项是没有 checked的,还是老老实实的执行sudo chmod o+w /cores命令后重启后secureCRT就好了。)

Option --> Global Options 取消 Create core file when application crashes 前面的复选框选择即可

来自:https://blog.90.vc/archives/93.html
想对指针类型里装的地址改动,在函数参数里需要两个**表明它是一个指向指针的指针(也就是传的是指针q的地址) ,ptr_copy(char ** d,char *s){ *d = s;} ,赋值里注意一下是*d =s(*d就是传指针地址的址,不再是值,也就是不会被在函数完成销毁后,外面值不会变,因为传的是指针q的地址。),也就是d里存指针地址*d表示,*d=s,s就是一个地址刚好能赋值。
更多说明帮助理解传参部分:
c语言菜鸟指针传递 问题 void func(char **p) {} int main(void) { char *q=null; func(&q); } p被赋值了神马 为什么俩星号?
p被赋值的是char* p的地址!你把char* 理解为一个变量就好理解了,就好比char a;char是变量类型,a是变量。既然是变量它就有地址,所以p也有地址,char **p,可以看成是 char* (*p)所以char** 被传的值是存放地址的变量的地址!

void func(char **p) {} //函数参数是指向指针的指针
int main(void)
{
char *q=null; //q定义为指针类型
func(&q); //&q,是取q的地址,q是一个指针类型,所以&q就是指针q的地址,即向指针的指针
}

来自:https://zhidao.baidu.com/question/686311732439253092.html


问:运行的以下clang代码,我希望输出ptr3=123与var相同ptr2的结果,但是结果是ptr3=(null)。如何修改我想要的结果代码?

gcc a.c -o a
./a
ptr2=123
ptr3=1PTI

让我们来看看您的“复制”功能:

void ptr_copy(char* d, char* s)
{
    d = s;
}
在函数中,变量d是局部变量。一旦函数返回并d超出范围并终止其生命,对它的分配将丢失。

这使您ptr3在main函数中留下未初始化的变量,使用它会导致未定义的行为 -

如果要复制指针,则需要通过将指针传递给指针本身来模拟按引用传递:

void ptr_copy(char** d, char* s)
{
    *d = s;
}
并称其为

ptr_copy(&ptr3, ptr)

需要的是一个不同的ptr_copy功能,如下所示:

void ptr_copy(char** dst, char* src) {
    (*dst) = src;
}

ptr_copy(&ptr3, ptr);
这个想法是您将内容填充ptr到ptr3存储的位置(因此&ptr3,不是ptr3)。

当您将指针传递给函数时,该指针的值将被传递(即给定指针指向的地址)。因此,d内部ptr_copy的指针不同于(与该指针具有相同的值,但它位于内存的另一部分中)不同的指针。这就是为什么分配,更改地址指向的原因,但是对却没有任何作用。

确实考虑一个功能

void value_copy(int d, int s) {
    d = s;
}
int i1 = 3;
int i3 = 2;
value_copy(i3, i1);
您不希望i3在调用后等于3 value_copy(),对吗?

正确调用如下:




#make a.c
cc     a.c   -o a

#./a
ptr2=123
ptr3=123


来自:https://stackoverflow.com/questions/59084119/copy-string-to-pointer-failed-in-function-in-clang



经GDB调试一下,发现其经过char ** d传参数进入函数后,实现了对传入的指针传址的d进行了修改,返回时也是作了修改,所以能正确指向123,GDB在打印时print ptr就是地址和值,如下:
(gdb) l
8       int main(){
9           char *ptr = "123";
10          char* ptr2;
11          char* ptr3;
12
13          ptr2 = ptr;
14          printf("ptr=%p\n", ptr);
15          printf("ptr2=%p\n", ptr2);
16          ptr_copy(&ptr3, ptr);
17          printf("ptr3=%p\n", ptr3);
(gdb) p ptr
$1 = 0x400670 "123"
(gdb) n
14          printf("ptr=%p\n", ptr);
(gdb) s
ptr=0x400670
15          printf("ptr2=%p\n", ptr2);

(gdb) p ptr
$3 = 0x400670 "123"
(gdb) s
ptr2=0x400670
16          ptr_copy(&ptr3, ptr);
(gdb) s
ptr_copy (d=0x7fffffffe498, s=0x400670 "123") at a.c:5
5           *d = s;
(gdb) p d
$4 = (char **) 0x7fffffffe498
(gdb) s
6       }

(gdb) s
main () at a.c:17
17          printf("ptr3=%p\n", ptr3);
(gdb) p ptr3
$6 = 0x400670 "123"

经过函数的运作,这个ptr,ptr2,ptr3都指向了0x400670,也就是123。
问题,之前以为是redis占用太多内存,后来发现是操作系统有问题:
free -m
             total       used       free     shared    buffers     cached
Mem:          7865       6138       1726          0        326       5110
-/+ buffers/cache:        701       7163

echo 1 > /proc/sys/vm/drop_caches

free -m
             total       used       free     shared    buffers     cached
Mem:          7865        530       7335          0          0         19

===============================================
Linux cached过高问题,手动释放cached

To free pagecache:  echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:  echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches

来自:https://www.cnblogs.com/yanwei-wang/p/8133888.html
ss -lnt
LISTEN     0      128                                                     *:57840                                                  *:*

sudo lsof -i tcp:57840  
rpc.statd 1453 rpcuser    9u  IPv4  13387      0t0  TCP *:57840 (LISTEN)

ps -ef|grep 1453          
rpcuser   1453     1  0  2018 ?        00:00:00 rpc.statd

rpm -qf /sbin/rpc.statd
nfs-utils-1.2.3-39.el6.x86_64

ls /etc/init.d/nfs*

/etc/init.d/nfslock status

vi /etc/services
nfs             2049/tcp        nfsd shilp      # Network File System
nfs             2049/udp        nfsd shilp      # Network File System
nfs             2049/sctp       nfsd shilp      # Network File System

找到里面的 nfs ,在前面加 # 注释掉,重启,我直接停掉服务。
/etc/init.d/nfslock stop
Stopping NFS statd:                                        [  OK  ]

来自:https://blog.csdn.net/maxuearn/article/details/79879607
分页: 1/38 第一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]