[{"data":1,"prerenderedAt":1200},["ShallowReactive",2],{"post-\u002Fposts\u002Fgolang-linux-file":3,"surround-\u002Fposts\u002Fgolang-linux-file":1191},{"id":4,"title":5,"body":6,"cover":1176,"date":1177,"description":1178,"draft":1179,"extension":1180,"meta":1181,"minutes":34,"navigation":790,"path":1182,"seo":1183,"stem":1184,"tags":1185,"updated":1176,"__hash__":1190},"posts\u002Fposts\u002Fgolang-linux-file.md","Golang在linux跨区移动文件失败",{"type":7,"value":8,"toc":1174},"minimark",[9,13,121,124,1170],[10,11,12],"p",{},"在项目涉及到了一个功能点，就是文件的移动，最开始是在windows下使用，然后发布到linux，业务第一阶段文件是一个分区下，代码还能正常运行，后期文件太多，一个分区装不下了，这时扩容了一个新的分区，然后就出现了*LinkError.错误，看到源码才知道，在非Unix系统下即使在同一个目录，Rename 不是原子操作。，源代码说明如下：",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-go shiki shiki-themes tokyo-night github-light","\u002F\u002F Rename renames (moves) oldpath to newpath.\n\u002F\u002F If newpath already exists and is not a directory, Rename replaces it.\n\u002F\u002F OS-specific restrictions may apply when oldpath and newpath are in different directories.\n\u002F\u002F Even within the same directory, on non-Unix platforms Rename is not an atomic operation.\n\u002F\u002F If there is an error, it will be of type *LinkError.\nfunc Rename(oldpath, newpath string) error {\n    return rename(oldpath, newpath)\n}\n","go","",[21,22,23,32,38,44,50,56,94,115],"code",{"__ignoreMap":19},[24,25,28],"span",{"class":26,"line":27},"line",1,[24,29,31],{"class":30},"sSWvG","\u002F\u002F Rename renames (moves) oldpath to newpath.\n",[24,33,35],{"class":26,"line":34},2,[24,36,37],{"class":30},"\u002F\u002F If newpath already exists and is not a directory, Rename replaces it.\n",[24,39,41],{"class":26,"line":40},3,[24,42,43],{"class":30},"\u002F\u002F OS-specific restrictions may apply when oldpath and newpath are in different directories.\n",[24,45,47],{"class":26,"line":46},4,[24,48,49],{"class":30},"\u002F\u002F Even within the same directory, on non-Unix platforms Rename is not an atomic operation.\n",[24,51,53],{"class":26,"line":52},5,[24,54,55],{"class":30},"\u002F\u002F If there is an error, it will be of type *LinkError.\n",[24,57,59,63,67,71,75,79,82,85,88,91],{"class":26,"line":58},6,[24,60,62],{"class":61},"sBxw3","func",[24,64,66],{"class":65},"sxkyg"," Rename",[24,68,70],{"class":69},"sjXpA","(",[24,72,74],{"class":73},"sgjcI","oldpath",[24,76,78],{"class":77},"szu1u",",",[24,80,81],{"class":73}," newpath",[24,83,84],{"class":61}," string",[24,86,87],{"class":69},")",[24,89,90],{"class":61}," error",[24,92,93],{"class":69}," {\n",[24,95,97,100,103,105,108,110,112],{"class":26,"line":96},7,[24,98,99],{"class":61},"    return",[24,101,102],{"class":65}," rename",[24,104,70],{"class":69},[24,106,74],{"class":107},"s4do5",[24,109,78],{"class":77},[24,111,81],{"class":107},[24,113,114],{"class":69},")\n",[24,116,118],{"class":26,"line":117},8,[24,119,120],{"class":69},"}\n",[10,122,123],{},"不能使用这个方法来移动文件后，还有其他方式吗，目前处理的方案是先复制，然后再删除，实际使用下来的效率是低于最开始使用的Rename。 实例代码如下：",[14,125,127],{"className":16,"code":126,"language":18,"meta":19,"style":19},"func MoveFile(srcDir, destDir, move string) {\n    files, err := os.ReadDir(srcDir)\n    if err != nil {\n        return\n    }\n    for _, file := range files {\n        fileName := file.Name()\n        \u002F\u002F 判断文件是否存在，如果存在则删除，否则则移动对应的文件\n        toPath := filepath.Join(destDir, fileName)\n        srcPath := filepath.Join(srcDir, fileName)\n        if move == \"1\" {\n            log.Printf(\"Move file: %s\\n\", fileName)\n            err := os.Rename(srcPath, toPath)\n            if err != nil {\n                log.Printf(\"Failed to move the file: %s\\n\", err)\n            }\n        } else {\n            if _, err := os.Stat(toPath); err == nil {\n                \u002F\u002F 如果存在\n                err := os.Remove(srcPath)\n                if err != nil {\n                    return\n                }\n                fmt.Printf(\"Deleted: %s\\n\", file.Name())\n            } else {\n                \u002F\u002F 不存在\n                srcPath := filepath.Join(srcDir, fileName)\n                \u002F\u002F 复制文件\n                if err := copyFile(srcPath, toPath); err != nil {\n                    fmt.Println(\"Failed to copy:\", err)\n                    return\n                }\n                \u002F\u002F 删除源文件\n                if err := os.Remove(srcPath); err != nil {\n                    fmt.Println(\"Failed to delete the original file:\", err)\n                    return\n                }\n            }\n        }\n    }\n}\n\nfunc copyFile(src, dest string) error {\n    \u002F\u002F 打开源文件\n    srcFile, err := os.Open(src)\n    if err != nil {\n        log.Fatalf(\"Error opening source file: %v\", err)\n        return err\n    }\n    defer srcFile.Close()\n    \u002F\u002F 创建目标文件\n    dstFile, err := os.Create(dest)\n    if err != nil {\n        log.Fatalf(\"Error creating destination file: %v\", err)\n        return err\n    }\n    defer dstFile.Close()\n    \u002F\u002F 使用 bufio.NewReader 来提高读取性能\n    reader := bufio.NewReader(srcFile)\n    \u002F\u002F 复制文件内容\n    _, err = io.Copy(dstFile, reader)\n    if err != nil {\n        log.Fatalf(\"Error copying file: %v\", err)\n        return err\n    }\n    log.Println(\"File copied successfully\")\n    return nil\n}\n",[21,128,129,157,186,202,207,212,235,252,257,285,309,333,367,394,408,437,443,454,492,498,519,533,539,545,579,589,595,619,625,657,683,688,693,699,730,754,759,764,769,775,780,785,792,817,823,848,861,890,899,904,920,926,952,965,991,998,1003,1017,1023,1046,1052,1085,1098,1124,1131,1136,1157,1165],{"__ignoreMap":19},[24,130,131,133,136,138,141,143,146,148,151,153,155],{"class":26,"line":27},[24,132,62],{"class":61},[24,134,135],{"class":65}," MoveFile",[24,137,70],{"class":69},[24,139,140],{"class":73},"srcDir",[24,142,78],{"class":77},[24,144,145],{"class":73}," destDir",[24,147,78],{"class":77},[24,149,150],{"class":73}," move",[24,152,84],{"class":61},[24,154,87],{"class":69},[24,156,93],{"class":69},[24,158,159,162,164,167,171,174,177,180,182,184],{"class":26,"line":34},[24,160,161],{"class":107},"    files",[24,163,78],{"class":77},[24,165,166],{"class":107}," err",[24,168,170],{"class":169},"sNP9S"," :=",[24,172,173],{"class":107}," os",[24,175,176],{"class":77},".",[24,178,179],{"class":65},"ReadDir",[24,181,70],{"class":69},[24,183,140],{"class":107},[24,185,114],{"class":69},[24,187,188,191,193,196,200],{"class":26,"line":40},[24,189,190],{"class":61},"    if",[24,192,166],{"class":107},[24,194,195],{"class":61}," !=",[24,197,199],{"class":198},"sjYRd"," nil",[24,201,93],{"class":69},[24,203,204],{"class":26,"line":46},[24,205,206],{"class":61},"        return\n",[24,208,209],{"class":26,"line":52},[24,210,211],{"class":69},"    }\n",[24,213,214,217,220,222,225,227,230,233],{"class":26,"line":58},[24,215,216],{"class":61},"    for",[24,218,219],{"class":107}," _",[24,221,78],{"class":77},[24,223,224],{"class":107}," file",[24,226,170],{"class":169},[24,228,229],{"class":61}," range",[24,231,232],{"class":107}," files",[24,234,93],{"class":69},[24,236,237,240,242,244,246,249],{"class":26,"line":96},[24,238,239],{"class":107},"        fileName",[24,241,170],{"class":169},[24,243,224],{"class":107},[24,245,176],{"class":77},[24,247,248],{"class":65},"Name",[24,250,251],{"class":69},"()\n",[24,253,254],{"class":26,"line":117},[24,255,256],{"class":30},"        \u002F\u002F 判断文件是否存在，如果存在则删除，否则则移动对应的文件\n",[24,258,260,263,265,268,270,273,275,278,280,283],{"class":26,"line":259},9,[24,261,262],{"class":107},"        toPath",[24,264,170],{"class":169},[24,266,267],{"class":107}," filepath",[24,269,176],{"class":77},[24,271,272],{"class":65},"Join",[24,274,70],{"class":69},[24,276,277],{"class":107},"destDir",[24,279,78],{"class":77},[24,281,282],{"class":107}," fileName",[24,284,114],{"class":69},[24,286,288,291,293,295,297,299,301,303,305,307],{"class":26,"line":287},10,[24,289,290],{"class":107},"        srcPath",[24,292,170],{"class":169},[24,294,267],{"class":107},[24,296,176],{"class":77},[24,298,272],{"class":65},[24,300,70],{"class":69},[24,302,140],{"class":107},[24,304,78],{"class":77},[24,306,282],{"class":107},[24,308,114],{"class":69},[24,310,312,315,317,320,324,328,331],{"class":26,"line":311},11,[24,313,314],{"class":61},"        if",[24,316,150],{"class":107},[24,318,319],{"class":61}," ==",[24,321,323],{"class":322},"sbW-k"," \"",[24,325,327],{"class":326},"snP_1","1",[24,329,330],{"class":322},"\"",[24,332,93],{"class":69},[24,334,336,339,341,344,346,348,351,355,359,361,363,365],{"class":26,"line":335},12,[24,337,338],{"class":107},"            log",[24,340,176],{"class":77},[24,342,343],{"class":65},"Printf",[24,345,70],{"class":69},[24,347,330],{"class":322},[24,349,350],{"class":326},"Move file: ",[24,352,354],{"class":353},"sAus6","%s",[24,356,358],{"class":357},"sKC9t","\\n",[24,360,330],{"class":322},[24,362,78],{"class":77},[24,364,282],{"class":107},[24,366,114],{"class":69},[24,368,370,373,375,377,379,382,384,387,389,392],{"class":26,"line":369},13,[24,371,372],{"class":107},"            err",[24,374,170],{"class":169},[24,376,173],{"class":107},[24,378,176],{"class":77},[24,380,381],{"class":65},"Rename",[24,383,70],{"class":69},[24,385,386],{"class":107},"srcPath",[24,388,78],{"class":77},[24,390,391],{"class":107}," toPath",[24,393,114],{"class":69},[24,395,397,400,402,404,406],{"class":26,"line":396},14,[24,398,399],{"class":61},"            if",[24,401,166],{"class":107},[24,403,195],{"class":61},[24,405,199],{"class":198},[24,407,93],{"class":69},[24,409,411,414,416,418,420,422,425,427,429,431,433,435],{"class":26,"line":410},15,[24,412,413],{"class":107},"                log",[24,415,176],{"class":77},[24,417,343],{"class":65},[24,419,70],{"class":69},[24,421,330],{"class":322},[24,423,424],{"class":326},"Failed to move the file: ",[24,426,354],{"class":353},[24,428,358],{"class":357},[24,430,330],{"class":322},[24,432,78],{"class":77},[24,434,166],{"class":107},[24,436,114],{"class":69},[24,438,440],{"class":26,"line":439},16,[24,441,442],{"class":69},"            }\n",[24,444,446,449,452],{"class":26,"line":445},17,[24,447,448],{"class":69},"        }",[24,450,451],{"class":61}," else",[24,453,93],{"class":69},[24,455,457,459,461,463,465,467,469,471,474,476,479,481,484,486,488,490],{"class":26,"line":456},18,[24,458,399],{"class":61},[24,460,219],{"class":107},[24,462,78],{"class":77},[24,464,166],{"class":107},[24,466,170],{"class":169},[24,468,173],{"class":107},[24,470,176],{"class":77},[24,472,473],{"class":65},"Stat",[24,475,70],{"class":69},[24,477,478],{"class":107},"toPath",[24,480,87],{"class":69},[24,482,483],{"class":77},";",[24,485,166],{"class":107},[24,487,319],{"class":61},[24,489,199],{"class":198},[24,491,93],{"class":69},[24,493,495],{"class":26,"line":494},19,[24,496,497],{"class":30},"                \u002F\u002F 如果存在\n",[24,499,501,504,506,508,510,513,515,517],{"class":26,"line":500},20,[24,502,503],{"class":107},"                err",[24,505,170],{"class":169},[24,507,173],{"class":107},[24,509,176],{"class":77},[24,511,512],{"class":65},"Remove",[24,514,70],{"class":69},[24,516,386],{"class":107},[24,518,114],{"class":69},[24,520,522,525,527,529,531],{"class":26,"line":521},21,[24,523,524],{"class":61},"                if",[24,526,166],{"class":107},[24,528,195],{"class":61},[24,530,199],{"class":198},[24,532,93],{"class":69},[24,534,536],{"class":26,"line":535},22,[24,537,538],{"class":61},"                    return\n",[24,540,542],{"class":26,"line":541},23,[24,543,544],{"class":69},"                }\n",[24,546,548,551,553,555,557,559,562,564,566,568,570,572,574,576],{"class":26,"line":547},24,[24,549,550],{"class":107},"                fmt",[24,552,176],{"class":77},[24,554,343],{"class":65},[24,556,70],{"class":69},[24,558,330],{"class":322},[24,560,561],{"class":326},"Deleted: ",[24,563,354],{"class":353},[24,565,358],{"class":357},[24,567,330],{"class":322},[24,569,78],{"class":77},[24,571,224],{"class":107},[24,573,176],{"class":77},[24,575,248],{"class":65},[24,577,578],{"class":69},"())\n",[24,580,582,585,587],{"class":26,"line":581},25,[24,583,584],{"class":69},"            }",[24,586,451],{"class":61},[24,588,93],{"class":69},[24,590,592],{"class":26,"line":591},26,[24,593,594],{"class":30},"                \u002F\u002F 不存在\n",[24,596,598,601,603,605,607,609,611,613,615,617],{"class":26,"line":597},27,[24,599,600],{"class":107},"                srcPath",[24,602,170],{"class":169},[24,604,267],{"class":107},[24,606,176],{"class":77},[24,608,272],{"class":65},[24,610,70],{"class":69},[24,612,140],{"class":107},[24,614,78],{"class":77},[24,616,282],{"class":107},[24,618,114],{"class":69},[24,620,622],{"class":26,"line":621},28,[24,623,624],{"class":30},"                \u002F\u002F 复制文件\n",[24,626,628,630,632,634,637,639,641,643,645,647,649,651,653,655],{"class":26,"line":627},29,[24,629,524],{"class":61},[24,631,166],{"class":107},[24,633,170],{"class":169},[24,635,636],{"class":65}," copyFile",[24,638,70],{"class":69},[24,640,386],{"class":107},[24,642,78],{"class":77},[24,644,391],{"class":107},[24,646,87],{"class":69},[24,648,483],{"class":77},[24,650,166],{"class":107},[24,652,195],{"class":61},[24,654,199],{"class":198},[24,656,93],{"class":69},[24,658,660,663,665,668,670,672,675,677,679,681],{"class":26,"line":659},30,[24,661,662],{"class":107},"                    fmt",[24,664,176],{"class":77},[24,666,667],{"class":65},"Println",[24,669,70],{"class":69},[24,671,330],{"class":322},[24,673,674],{"class":326},"Failed to copy:",[24,676,330],{"class":322},[24,678,78],{"class":77},[24,680,166],{"class":107},[24,682,114],{"class":69},[24,684,686],{"class":26,"line":685},31,[24,687,538],{"class":61},[24,689,691],{"class":26,"line":690},32,[24,692,544],{"class":69},[24,694,696],{"class":26,"line":695},33,[24,697,698],{"class":30},"                \u002F\u002F 删除源文件\n",[24,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728],{"class":26,"line":701},34,[24,703,524],{"class":61},[24,705,166],{"class":107},[24,707,170],{"class":169},[24,709,173],{"class":107},[24,711,176],{"class":77},[24,713,512],{"class":65},[24,715,70],{"class":69},[24,717,386],{"class":107},[24,719,87],{"class":69},[24,721,483],{"class":77},[24,723,166],{"class":107},[24,725,195],{"class":61},[24,727,199],{"class":198},[24,729,93],{"class":69},[24,731,733,735,737,739,741,743,746,748,750,752],{"class":26,"line":732},35,[24,734,662],{"class":107},[24,736,176],{"class":77},[24,738,667],{"class":65},[24,740,70],{"class":69},[24,742,330],{"class":322},[24,744,745],{"class":326},"Failed to delete the original file:",[24,747,330],{"class":322},[24,749,78],{"class":77},[24,751,166],{"class":107},[24,753,114],{"class":69},[24,755,757],{"class":26,"line":756},36,[24,758,538],{"class":61},[24,760,762],{"class":26,"line":761},37,[24,763,544],{"class":69},[24,765,767],{"class":26,"line":766},38,[24,768,442],{"class":69},[24,770,772],{"class":26,"line":771},39,[24,773,774],{"class":69},"        }\n",[24,776,778],{"class":26,"line":777},40,[24,779,211],{"class":69},[24,781,783],{"class":26,"line":782},41,[24,784,120],{"class":69},[24,786,788],{"class":26,"line":787},42,[24,789,791],{"emptyLinePlaceholder":790},true,"\n",[24,793,795,797,799,801,804,806,809,811,813,815],{"class":26,"line":794},43,[24,796,62],{"class":61},[24,798,636],{"class":65},[24,800,70],{"class":69},[24,802,803],{"class":73},"src",[24,805,78],{"class":77},[24,807,808],{"class":73}," dest",[24,810,84],{"class":61},[24,812,87],{"class":69},[24,814,90],{"class":61},[24,816,93],{"class":69},[24,818,820],{"class":26,"line":819},44,[24,821,822],{"class":30},"    \u002F\u002F 打开源文件\n",[24,824,826,829,831,833,835,837,839,842,844,846],{"class":26,"line":825},45,[24,827,828],{"class":107},"    srcFile",[24,830,78],{"class":77},[24,832,166],{"class":107},[24,834,170],{"class":169},[24,836,173],{"class":107},[24,838,176],{"class":77},[24,840,841],{"class":65},"Open",[24,843,70],{"class":69},[24,845,803],{"class":107},[24,847,114],{"class":69},[24,849,851,853,855,857,859],{"class":26,"line":850},46,[24,852,190],{"class":61},[24,854,166],{"class":107},[24,856,195],{"class":61},[24,858,199],{"class":198},[24,860,93],{"class":69},[24,862,864,867,869,872,874,876,879,882,884,886,888],{"class":26,"line":863},47,[24,865,866],{"class":107},"        log",[24,868,176],{"class":77},[24,870,871],{"class":65},"Fatalf",[24,873,70],{"class":69},[24,875,330],{"class":322},[24,877,878],{"class":326},"Error opening source file: ",[24,880,881],{"class":353},"%v",[24,883,330],{"class":322},[24,885,78],{"class":77},[24,887,166],{"class":107},[24,889,114],{"class":69},[24,891,893,896],{"class":26,"line":892},48,[24,894,895],{"class":61},"        return",[24,897,898],{"class":107}," err\n",[24,900,902],{"class":26,"line":901},49,[24,903,211],{"class":69},[24,905,907,910,913,915,918],{"class":26,"line":906},50,[24,908,909],{"class":61},"    defer",[24,911,912],{"class":107}," srcFile",[24,914,176],{"class":77},[24,916,917],{"class":65},"Close",[24,919,251],{"class":69},[24,921,923],{"class":26,"line":922},51,[24,924,925],{"class":30},"    \u002F\u002F 创建目标文件\n",[24,927,929,932,934,936,938,940,942,945,947,950],{"class":26,"line":928},52,[24,930,931],{"class":107},"    dstFile",[24,933,78],{"class":77},[24,935,166],{"class":107},[24,937,170],{"class":169},[24,939,173],{"class":107},[24,941,176],{"class":77},[24,943,944],{"class":65},"Create",[24,946,70],{"class":69},[24,948,949],{"class":107},"dest",[24,951,114],{"class":69},[24,953,955,957,959,961,963],{"class":26,"line":954},53,[24,956,190],{"class":61},[24,958,166],{"class":107},[24,960,195],{"class":61},[24,962,199],{"class":198},[24,964,93],{"class":69},[24,966,968,970,972,974,976,978,981,983,985,987,989],{"class":26,"line":967},54,[24,969,866],{"class":107},[24,971,176],{"class":77},[24,973,871],{"class":65},[24,975,70],{"class":69},[24,977,330],{"class":322},[24,979,980],{"class":326},"Error creating destination file: ",[24,982,881],{"class":353},[24,984,330],{"class":322},[24,986,78],{"class":77},[24,988,166],{"class":107},[24,990,114],{"class":69},[24,992,994,996],{"class":26,"line":993},55,[24,995,895],{"class":61},[24,997,898],{"class":107},[24,999,1001],{"class":26,"line":1000},56,[24,1002,211],{"class":69},[24,1004,1006,1008,1011,1013,1015],{"class":26,"line":1005},57,[24,1007,909],{"class":61},[24,1009,1010],{"class":107}," dstFile",[24,1012,176],{"class":77},[24,1014,917],{"class":65},[24,1016,251],{"class":69},[24,1018,1020],{"class":26,"line":1019},58,[24,1021,1022],{"class":30},"    \u002F\u002F 使用 bufio.NewReader 来提高读取性能\n",[24,1024,1026,1029,1031,1034,1036,1039,1041,1044],{"class":26,"line":1025},59,[24,1027,1028],{"class":107},"    reader",[24,1030,170],{"class":169},[24,1032,1033],{"class":107}," bufio",[24,1035,176],{"class":77},[24,1037,1038],{"class":65},"NewReader",[24,1040,70],{"class":69},[24,1042,1043],{"class":107},"srcFile",[24,1045,114],{"class":69},[24,1047,1049],{"class":26,"line":1048},60,[24,1050,1051],{"class":30},"    \u002F\u002F 复制文件内容\n",[24,1053,1055,1058,1060,1062,1065,1068,1070,1073,1075,1078,1080,1083],{"class":26,"line":1054},61,[24,1056,1057],{"class":107},"    _",[24,1059,78],{"class":77},[24,1061,166],{"class":107},[24,1063,1064],{"class":169}," =",[24,1066,1067],{"class":107}," io",[24,1069,176],{"class":77},[24,1071,1072],{"class":65},"Copy",[24,1074,70],{"class":69},[24,1076,1077],{"class":107},"dstFile",[24,1079,78],{"class":77},[24,1081,1082],{"class":107}," reader",[24,1084,114],{"class":69},[24,1086,1088,1090,1092,1094,1096],{"class":26,"line":1087},62,[24,1089,190],{"class":61},[24,1091,166],{"class":107},[24,1093,195],{"class":61},[24,1095,199],{"class":198},[24,1097,93],{"class":69},[24,1099,1101,1103,1105,1107,1109,1111,1114,1116,1118,1120,1122],{"class":26,"line":1100},63,[24,1102,866],{"class":107},[24,1104,176],{"class":77},[24,1106,871],{"class":65},[24,1108,70],{"class":69},[24,1110,330],{"class":322},[24,1112,1113],{"class":326},"Error copying file: ",[24,1115,881],{"class":353},[24,1117,330],{"class":322},[24,1119,78],{"class":77},[24,1121,166],{"class":107},[24,1123,114],{"class":69},[24,1125,1127,1129],{"class":26,"line":1126},64,[24,1128,895],{"class":61},[24,1130,898],{"class":107},[24,1132,1134],{"class":26,"line":1133},65,[24,1135,211],{"class":69},[24,1137,1139,1142,1144,1146,1148,1150,1153,1155],{"class":26,"line":1138},66,[24,1140,1141],{"class":107},"    log",[24,1143,176],{"class":77},[24,1145,667],{"class":65},[24,1147,70],{"class":69},[24,1149,330],{"class":322},[24,1151,1152],{"class":326},"File copied successfully",[24,1154,330],{"class":322},[24,1156,114],{"class":69},[24,1158,1160,1162],{"class":26,"line":1159},67,[24,1161,99],{"class":61},[24,1163,1164],{"class":198}," nil\n",[24,1166,1168],{"class":26,"line":1167},68,[24,1169,120],{"class":69},[1171,1172,1173],"style",{},"html pre.shiki code .sSWvG, html code.shiki .sSWvG{--shiki-default:#51597D;--shiki-default-font-style:italic;--shiki-light:#6A737D;--shiki-light-font-style:inherit}html pre.shiki code .sBxw3, html code.shiki .sBxw3{--shiki-default:#BB9AF7;--shiki-light:#D73A49}html pre.shiki code .sxkyg, html code.shiki .sxkyg{--shiki-default:#7AA2F7;--shiki-light:#6F42C1}html pre.shiki code .sjXpA, html code.shiki .sjXpA{--shiki-default:#9ABDF5;--shiki-light:#24292E}html pre.shiki code .sgjcI, html code.shiki .sgjcI{--shiki-default:#E0AF68;--shiki-light:#E36209}html pre.shiki code .szu1u, html code.shiki .szu1u{--shiki-default:#89DDFF;--shiki-light:#24292E}html pre.shiki code .s4do5, html code.shiki .s4do5{--shiki-default:#C0CAF5;--shiki-light:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html pre.shiki code .sNP9S, html code.shiki .sNP9S{--shiki-default:#89DDFF;--shiki-light:#D73A49}html pre.shiki code .sjYRd, html code.shiki .sjYRd{--shiki-default:#FF9E64;--shiki-light:#005CC5}html pre.shiki code .sbW-k, html code.shiki .sbW-k{--shiki-default:#89DDFF;--shiki-light:#032F62}html pre.shiki code .snP_1, html code.shiki .snP_1{--shiki-default:#9ECE6A;--shiki-light:#032F62}html pre.shiki code .sAus6, html code.shiki .sAus6{--shiki-default:#C0CAF5;--shiki-light:#005CC5}html pre.shiki code .sKC9t, html code.shiki .sKC9t{--shiki-default:#89DDFF;--shiki-light:#005CC5}",{"title":19,"searchDepth":40,"depth":40,"links":1175},[],null,"2024-03-19","当前基于Golang 1.22.2 版本实现",false,"md",{},"\u002Fposts\u002Fgolang-linux-file",{"title":5,"description":1178},"posts\u002Fgolang-linux-file",[1186,1187,1188,1189],"golang","linux","LinkError","文件移动","_YiDJfzgcXxAL4xsVErmKITLhfVf0EoTdmtv6wUva3A",[1192,1196],{"title":1193,"path":1194,"stem":1195,"children":-1},"如何自定义处理Golang Cmd的日志输出","\u002Fposts\u002Fgolang-logger-out","posts\u002Fgolang-logger-out",{"title":1197,"path":1198,"stem":1199,"children":-1},"Golang exec.Cmd在Kill后不能关闭进程","\u002Fposts\u002Fgolang-exec-kill","posts\u002Fgolang-exec-kill",1789524989342]